我有一个简单的Button,它有一个drawable set as icon:
<Button
android:id="@+id/bOk"
android:drawableStart="@drawable/icon_ok"
android:text="@string/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
当我在XML布局文件中禁用该按钮时:android:enabled="false"
或programmaticaly:bOk.setEnabled(false);
该按钮被禁用,它显示为“灰显”,但图标保持为启用状态。
我怎样才能看到图标也“变灰”?
答案 0 :(得分:5)
创建一个新的灰色图标,并将其添加到selector.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_ok" android:state_enabled="true" />
<item android:drawable="@drawable/icon_ok_disabled" android:state_enabled="false" />
</selector>
使用内部按钮,例如:android:drawableStart="@drawable/selector"
对于 TextColor ,
在res/color/mycustomtextcolor.xml
内创建另一个选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#666" android:state_enabled="false" />
<item android:color="#000" android:state_enabled="true"/>
</selector>
使用以下内容进行小部件调用:android:textColor="@color/mycustomtextcolor"
或者
在style
内添加另一项:<item name="android:textColor">@color/mycustomtextcolor</item>
答案 1 :(得分:2)
与常规按钮一样,具有图像背景的按钮在禁用时不会变灰。
您必须使用另一个显示为灰色的图像。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false"
android:drawable="@drawable/button_gray" /> ***button_gray is a Drawable image***
<item android:state_pressed="true"
android:drawable="@drawable/button_gray" />
<item android:drawable="@drawable/button_red" /> ***button_red is a Drawable image***
</selector>
答案 2 :(得分:1)
您可以使用带位图的选择器在启用和禁用状态下为您的drawable着色:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false">
<bitmap android:src="@drawable/icon_ok" android:tint="@color/disableColorWithAlpha" />
</item>
<item android:state_enabled="true">
<bitmap android:src="@drawable/icon_ok" android:tint="@color/colorAccent" />
</item>
</selector>