2017-04-18 1 views
0

FloatingActionButton에 아이콘 대신 텍스트를 표시하려고합니다. 따라서 FrameLayout을 사용하여이 작업을 수행했습니다. 그러나 onClickListerners가 작동하지 않습니다. android:clickable="true"을 변경하지 않았습니다.framelayout 내의 FloatingActionButton이 작동하지 않습니다.

<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> 

내가 두 가지 방법 사용하여 시도 : 다음은 내 샘플 레이아웃 파일 작업 클래스 내부의 모든 세 가지 요소에 프로그래밍 android:onClick="myMethod" 2. 설정을 OnClickListener를 설정 1. 즉 FrameLayout이, FAB 및 텍스트 뷰를

그러나, 나는 FrameLayout을 사용하지 않고 FAB를 정상적으로 사용한다. 잘 작동하고 있습니다.

해결책을 제공해주십시오.

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(); 
     } 
    }); 

MyMethod라는 내부 기록 장치 구현 본(). 콘솔에서 로그를 볼 수 없어서 onClick 이벤트가 트리거되지 않는 것 같습니다.

업데이트 : 레이아웃 파일에는 FrameLayout과 동일한 수준의 RecyclerView도 포함되어 있습니다. 문제가 RecyclerView의 존재로 인해 발생합니까?

+0

framelayout에서'android : clickable = "true"'를 제거하십시오. – rafsanahmad007

+0

클릭 이벤트 코드를 게시하십시오 – Shivam

+0

플로팅 버튼을 사용하는 것이 중요합니까? coz .. 둥근 모양의 배경을 버튼으로 설정하여 동일한 효과를 얻을 수 있습니다. –

답변

0

문제가 해결되었습니다. frameLayout에 android:layout_anchor을 리사이클 뷰 ID로 설정했습니다. 이제 버튼을 클릭 할 수 있습니다.

관련 문제