android - 可绘制资源和文本颜色

标签 android styles

我正在使用 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/

相关文章:

Android - 运行时居中图像按钮

android - 如何在android中编辑文本错误位置?

wpf - 当行中项目的属性更改时,如何更改 WPF DataGrid 控件中该行的样式

java - `DescriptorMatcher` 对象不在 OpenCV 场景中时做什么?

javascript - react-native:更改 <Picker.Item> 标签时 <Picker> 会丢失 selectedValue

HTML - 向左填充但保持文本居中

javascript - 如何使用 javascript 添加 css 属性?

WPF根据自定义属性的值设置CustomControl样式

android - 如何在模拟器中使用和测试Android 4.0 Calendar API?

WPF 替换和扩展样式