浮动操作按钮不会引发OnClick事件

Cap*_*emo 4 android floating-action-button

我有以下布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:id="@+id/rlMap">
    <org.mapsforge.map.android.view.MapView
        android:id="@+id/mapView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"/>
    <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:id="@+id/windArrow"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_gravity="top|right|end"
        android:src="@drawable/arrow"
        android:layout_alignStart="@+id/fab" />
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right|end"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:src="@drawable/settings"
        android:clickable="true"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

以及OnCreate方法中的以下代码:

...
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.d(TAG,"FAB Setting Clicked");
            Intent i = new Intent(getApplicationContext(), AppPreferences.class);
            startActivity(i);
        }
    });
...
Run Code Online (Sandbox Code Playgroud)

但是,当我按下按钮时,什么也没有发生,意图没有运行,并且日志也没有写入。

按钮动画正在工作,每当我按下按钮时,都会出现以下日志消息:

D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN

因此似乎有一些反应。

我究竟做错了什么?

小智 5

尝试这个:

fab.bringToFront();
Run Code Online (Sandbox Code Playgroud)

应该有帮助。


Cap*_*emo 2

@Tasos 建议的解决方案有效:

在 xml 中添加点击事件,例如

android:onClick="runThis"
Run Code Online (Sandbox Code Playgroud)

然后在活动中添加

public void runThis(View v) { ..... }
Run Code Online (Sandbox Code Playgroud)

  • 同样的问题在这里,我也很感兴趣为什么它不起作用。 (2认同)