ImageView使用Drawable Selector时忽略了启用状态

17

使用状态选择器作为 ImageViewsrc 时,enabled="false" 被忽略。

也就是说,以下代码无法正常工作:

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:enabled="false"
        android:src="@drawable/state_drawable" >

附言: 我有一个丑陋的解决方案,我很快会把它发布为答案,如果你有更好的方法或者对这种行为有解释,请告诉我。


你有什么解决方法?已接受的解决方案对我无效。 - ThanosFisherman
@ThanosFisherman 请看我的回答,以下开始为“可能的解决方法”。 - marmor
5个回答

24

尝试添加属性 android:clickable="true"。


2

我刚刚添加了以下属性:

android:background="@drawable/image_selector"

“android:src”不是必须添加的。

现在看起来应该是这样的:

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:background="@drawable/state_drawable" >

希望这能有所帮助...

2
可能的解决方法:使用带有复合图像的TextView
<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:drawableLeft="@drawable/state_drawable"
     android:enabled="false" />

这个似乎可行,并从state_drawable中提取正确的可绘制对象,但不是很直观。


这是唯一对我有效的解决方案。谢谢! - VIN

0
Kotlin 扩展函数:启用/禁用 ImageView/ImageButton,无需使用 selector。
fun ImageView.setImageViewEnabled(enabled: Boolean) = if(enabled) {
    drawable.clearColorFilter()
    isEnabled = true
} else {
    drawable.colorFilter = PorterDuffColorFilter(Color.GRAY, PorterDuff.Mode.SRC_IN)
    isEnabled = false
}

0

对我而言,只有这个起作用:

image.setClickable(false); 

对于ImegeView,android:enabled="false"出现某些问题时无法工作。


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