android – 禁用ImageButton

这看起来很简单,但是我无法禁用ImageButton。它继续收到点击事件,它的外观不会像标准的按钮一样改变。

有一些similar questions在SO,但他们不帮助我。

即使有这样一个非常简单的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <ImageButton
        android:id="@+id/btn_call"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:clickable="false"
        android:enabled="false"
        android:src="@android:drawable/sym_action_call" />

</LinearLayout>

该按钮仍然启用,我可以点击它。

奇怪的是,如果我将ImageButton更改为一个简单的按钮,那么它按照预期工作。该按钮变为禁用和不可点击。我不明白有没有人有想法?

ImageButton有不同的继承链意味着它不扩展Button:

ImageButton< ImageView<视图

It continues to receive click events

当您为视图设置点击监听器时,会发生什么:

public void setOnClickListener(OnClickListener l) {
    if (!isClickable()) {
        setClickable(true);
    }
    mOnClickListener = l;
}

所以如果你设置一个监听器的android:clickable =“false”更改为android:clickable =“true”。

and its appearance don’t change like a standard Button would

您应该为视图提供可绘制的状态列表,以便可以基于android:enabled设置适当的图像。你有这个吗?或者你只有你的按钮的图像?

编辑:您可以在StateListDrawable here上找到信息。android:state_enabled是您需要在列表中使用的内容,以便告诉操作系统该状态下要使用的映像。

EDIT2:既然你真的需要添加一个监听器,你可以在监听器里面检查一下if(!isEnabled()){return; } else {/ *处理事件* /}。

http://stackoverflow.com/questions/8196206/disable-an-imagebutton

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:android – 禁用ImageButton