我想在FloatingActionButton上显示文本而不是图标。因此,我利用FrameLayout来实现这一目标。但是,没有一个onClickListerners正在工作。我设置android:clickable="true"
仍然没有变化。
下面是我的示例布局文件:
<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>
我尝试使用这两种方法:
1.设置android:onClick="myMethod"
2.以编程方式在所有三个元素上设置onClickListener,即Activity类中的FrameLayout,FAB和TextView
但是,我正常使用FAB,即不使用FrameLayout;它工作正常。
请提供一些解决方案。
编辑: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 :(得分:0)
问题得到了重新解决。我在FrameLayout上将android:layout_anchor
设置为recycleler view id。现在按钮是可点击的。