禁用一个ImageButton?

35

我想要使一个 ImageButton 处于 禁用状态(不可点击),但使用了 android:enabled="false" 并没有生效。

有人知道如何禁用一个 ImageButton 吗?

5个回答

29
如果您想将按钮显示为禁用状态(如果您已在xml可绘制文件中进行了设置),那么同时执行setClickable(false)setEnabled(false)就可以达到效果。

3
请注意,设置这些属性确实可以防止ImageButton被点击,但它不会像普通按钮一样使按钮变灰。 - Cody

17

2
如果您想使其看起来变灰,可以参考这个链接:https://dev59.com/c2sy5IYBdhLWcg3w9i1u#14128907 - Oleg Vaskevich

10
如果您想要 禁用 并使图像处于灰色状态,可以使用以下代码(Kotlin):
禁用:
chevron_left.imageAlpha = 75 // 0 being transparent and 255 being opaque
chevron_left.isEnabled = false

启用:

chevron_left.imageAlpha = 255
chevron_left.isEnabled = true

XML:

<ImageButton
            android:id="@+id/chevron_left"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_marginBottom="4dp"
            android:layout_marginStart="4dp"
            android:background="?android:attr/selectableItemBackgroundBorderless"
            android:src="@drawable/chevron_left"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"/>

注意,您的背景颜色将定义禁用状态的颜色。取决于您想要的结果。


10

当为ImageButton设置点击监听器时,在Android系统中,可点击属性会被重置为true。这就是为什么在XML中设置android:clickable="false"无效的原因。

此外,在XML中设置android:enabled="false"也对我无效。

有效的方法是只通过代码设置:

ImageButton mBtnDelayCall = (ImageButton)v.findViewById(R.id.btnCallDelay);
mBtnDelayCall.setEnabled(false);

-1

ImageButtonImageView 不同,没有 android:enabled="false" 属性,因为这是 TextView 的属性。如果你想在 XML 中为 ImageButton 设置 enable = false,你需要添加 android:focusable="false"android:clickable="false"


实际上,将 android:enabled 设置为“false”确实会禁用 ImageButton;该按钮不再接收点击事件。但它并不会改变按钮的外观。 - FractalBob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接