2017-04-18 4 views
0

Ich möchte Text anstelle von Symbol auf FloatingActionButton anzeigen. Daher habe ich FrameLayout verwendet, um dies zu erreichen. Keiner der onClickListers funktioniert jedoch. Ich habe android:clickable="true" noch keine Änderung gesetzt. Unten ist mein Beispiel Layout-Datei:FloatingActionButton in framelayout funktioniert nicht

<FrameLayout 
    android:id="@+id/frame" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_gravity="bottom|end" 
    android:clickable="true" 
    android:layout_margin="@dimen/activity_horizontal_margin"> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="30dp" 
     android:layout_height="match_parent" 
     android:elevation="7dp" 
     android:gravity="center" 
     android:layout_gravity="center_horizontal" 
     android:maxLines="3" 
     android:text="My Text" 
     android:clickable="true" 
     android:textAllCaps="true" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textColor="@android:color/white" 
     android:textSize="8sp" 
     android:textStyle="bold" /> 
</FrameLayout> 

Ich habe versucht, beide Methoden verwenden: 1. Einstellung android:onClick="myMethod" 2. Einstellung OnClickListener programmatisch auf alle drei Elemente, dh FrameLayout, FAB und Textview innerhalb Aktivitätsklasse

Allerdings verwende ich FAB normal, dh ohne FrameLayout; es funktioniert gut.

Bitte stellen Sie eine Lösung bereit.

EDIT: Activity.java

fab = (FloatingActionButton) findViewById(R.id.fab); 
    text= (TextView) findViewById(R.id.text); 
    frame = (FrameLayout) findViewById(R.id.frame); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      myMethod(); 
     } 
    }); 

    text.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      myMethod(); 
     } 
    }); 

    frame.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      myMethod(); 
     } 
    }); 

Logger Implementierung im Inneren myMethod(). Es scheint, dass onClick-Ereignis nicht ausgelöst wird, da ich kein Protokoll in der Konsole sehen kann.

Update :: Die Layout-Datei enthält auch RecyclerView auf der gleichen Ebene wie FrameLayout. Tritt das Problem aufgrund der Anwesenheit von RecyclerView auf?

+0

entfernen Sie 'android: clickable =" true "' von framelayout .. – rafsanahmad007

+0

bitte posten Sie Ihren Klick Event-Code – Shivam

+0

ist es wichtig Floating Button zu verwenden? coz .. Sie können dasselbe erzielen, indem Sie runden Formhintergrund zum Knopf einstellen. –

Antwort

0

Das Problem ist gelöst. Ich setze android:layout_anchor auf FrameLayout auf Recycler View ID. Jetzt ist die Schaltfläche anklickbar.

Verwandte Themen