Android ImageButton有时点击不工作

时间:2016-01-27 11:33:09

标签: android onclicklistener imagebutton

我在我的xml中使用ImageButton,如下所示:

<FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        >
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageButton_home"
            android:src="@drawable/home_icon"
            android:background="@android:color/transparent"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dp"
            android:focusableInTouchMode="false"
            android:focusable="false"
            android:clickable="true"
            />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/imageButton_back"
            android:src="@drawable/back_icon"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dp"
            android:background="@android:color/transparent"
            android:visibility="gone"
            android:focusableInTouchMode="false"
            android:focusable="false"
            android:clickable="true"
            />

    </FrameLayout>

一次只能看到一个图像按钮。 我正在捕获我的java代码中的点击如下:

  imageButtonHome.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent homeIntent = new Intent(SettingsActivity.this, MainActivity.class);
            startActivity(homeIntent);
        }
    });

这有时很好,但并非总是如此。 每当我点击图片按钮时,我都会在logcat中看到这一行:

D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN

即使未执行我的ImageButton点击操作,此行也会一直显示。

但是当我的ImageButton点击工作正常时,另一行会累加到日志:

 D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
 D/AbsListView: Get MotionRecognitionManager

我希望我的图像按钮每次都能正常工作。请帮忙。

4 个答案:

答案 0 :(得分:6)

为ImageButtons添加一些填充以捕获触摸事件。

答案 1 :(得分:0)

在ImageButton上使用setOnClickListener(...)

答案 2 :(得分:-1)

尝试使用LinearLayout而不是FrameLayout。

FrameLayout被认为只包含一个孩子。

答案 3 :(得分:-2)

替换此并尝试。

imageButtonHome.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent homeIntent = new Intent(SettingsActivity.this, MainActivity.class);
        startActivity(homeIntent);
    }
});