【发布时间】:2019-02-14 09:31:05
【问题描述】:
我已经为 ImageButton 的色调设置了一个可绘制对象,因此当按钮启用或禁用时,图标的颜色会自动更改,之后有没有办法以编程方式更改色调,所以我保持相同的行为只是启用和禁用状态的颜色不同?
my_layout.xml 的内容:
<ImageButton
android:id="@+id/button_minus"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@color/default_button_background"
android:tint="@drawable/button_tint_color"
app:srcCompat="@drawable/ic_remove_24px" />
button_tint_color.xml的内容:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:color="@color/icon_tint_disable_color" />
<item
android:color="@color/icon_tint_enable_color" />
</selector>
然后在我的代码中我可以执行buttonMinus.setEnabled(true) 或buttonMinus.setEnabled(false) 并且图标颜色会自动更改。有没有办法以编程方式为启用颜色或禁用颜色中的一种或两种设置不同的颜色?
【问题讨论】:
-
您需要以编程方式创建(或从按钮获取并编辑)
StateListDrawable -
是否无法更改分配的可绘制对象或应用具有不同值的“icon_tint_disable_color”和“icon_tint_enable_color”常量的不同主题?