我正在使用 drawables
来很好地设计我的按钮样式,效果很好,除了按钮中的文本颜色。
我已经在 selector
中定义了一个 state_enabled="false"
项目并使用 setEnabled
给我正确的按钮样式,但是我有跳过相当多的循环以获得不同的文本颜色。例如,此代码不起作用(禁用时显示无文本或黑色文本,启用时显示暗灰色):
public void setButtonsEnabled(boolean enable) {
btnAccept.setEnabled(enable);
btnDecline.setEnabled(enable);
int color = R.color.White;
if (!enable) {
color = R.color.DarkGray;
}
btnAccept.setTextColor(color);
btnDecline.setTextColor(color);
}
最佳答案
我找到了解决方案。
关键还在于将 TextColor 设置为 res/colors
中的 selector
:
android:textColor="@color/button_text"
android:background="@drawable/button_selector"
对于我使用的背景选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="false" android:drawable="@drawable/btn_buddy_enabled"></item>
<item android:state_enabled="false" android:drawable="@drawable/btn_buddy_disabled"></item>
<item android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/btn_buddy_clicked"></item>
</selector>
textColor 选择器是这样的:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="false" android:color="@color/White"></item>
<item android:state_enabled="false" android:color="@color/Gray"></item>
<item android:state_enabled="true" android:state_pressed="true" android:color="@color/White"></item>
</selector>
只需调用 setEnabled()
即可使一切正常运行。
关于android - 可绘制资源和文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12806795/