我想稍微更改标准Android按钮的颜色,以便更好地匹配客户的品牌.
到目前为止,我发现这样做的最好方法是将Button'drawable'改为drawable,位于res/drawable/red_button.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/red_button_pressed" />
<item android:state_focused="true" android:drawable="@drawable/red_button_focus" />
<item android:drawable="@drawable/red_button_rest" />
</selector>
Run Code Online (Sandbox Code Playgroud)
但这样做需要我居然为每一个按钮,我想自定义三种不同的可绘制(一个用于按钮在休息,一个集中的时候,和一个按下时).这似乎比我需要的更复杂,更干燥.
我真正想做的就是对按钮应用某种颜色转换.是否有更简单的方法来改变按钮的颜色而不是我正在做的事情?
我有一个禁用的ImageButton(不可点击或设置为禁用).我想给用户一种UI感觉,即在不使用任何其他图像的情况下禁用它.
有没有办法做到这一点?
按钮选择器允许为按钮的每个状态定义背景,但是如何为每个状态定义按钮的文本样式?我的目标是在禁用时使按钮变灰.所以我为按钮的禁用状态设置了一个灰色的背景,但我发现灰色文本的唯一方法是在禁用按钮时动态更改它的颜色...
有人可以帮忙吗?
谢谢
<style name="srp_button" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/btn_default</item>
<item name="android:textColor">#ffffff</item> <!-- How to specify different color for different state? -->
<!-- more stuff -->
</style>
Run Code Online (Sandbox Code Playgroud)
绘制/ btn_default.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true"><shape>
<solid android:color="@color/pink" />
<corners android:radius="6dp" />
</shape></item>
<item><shape>
<solid android:color="#000000" />
<corners android:radius="6dp" />
</shape></item>
</selector>
Run Code Online (Sandbox Code Playgroud) 如果按下按钮,我会尝试切换按钮的背景.我建立了一个选择器,就像这里建议的答案:标准Android按钮具有不同的颜色
最后我想把GradientDrawables放在里面,但出于调试目的我只想设置一个颜色,看看它是否正常工作.这是我的选择器
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/red"/>
<item
android:state_focused="true"
android:drawable="@color/white"/>
<item
android:state_pressed="true"
android:drawable="@color/white"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.我从我的按钮中将选择器设置为背景,并且只能看到它们的红色.我做错了什么(Build Target 2.1)