是否可以使用appcompat 21更改特定小部件的颜色?其实我对RadioButton的颜色很感兴趣。
我读到它可能在api 21+上。但旧api怎么样?
答案 0 :(得分:5)
100%正常工作
只需为您的View创建样式并更改colorPrimary和colorAccent,如下所示:
<style name="RadioButtonTeal" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorAccent">@color/md_red_600</item>
<item name="colorPrimary">@color/md_teal_600</item>
</style>
然后只需将此样式添加到AppCompatRadioButton:
<android.support.v7.widget.AppCompatRadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/RadioButtonTeal" />
请记住您的View应该从AppCompatLibrary创建,例如AppCompatRadioButton。
答案 1 :(得分:2)
如果您使用appcompat-v7(rev 21)并从Theme.Appcompat扩展您的主题,您的RadioButton将自动从扩展主题的“color *”设置中获取。例如,“已检查”的radiobutton将显示您主题中设置的“colorAccent”值。
我不确定以后的appCompat版本是否会发生变化(请参阅Chris Banes的这篇文章的常见问题解答:https://chris.banes.me/2014/10/17/appcompat-v21/),但是现在,如果你想设置一个颜色radiobutton明确地,您仍然可以创建一个合适的statelistdrawable。这将使用您设置的任何颜色。请参阅以下SO答案,以获得一个很好的例子: https://stackoverflow.com/a/19163987/2259418
答案 2 :(得分:2)
上面的答案很好!另一方面,在这里您可以找到如何设置RadioButtons样式的文档
http://www.materialdoc.com/radio-button/
予。在styles.xml文件中声明自定义样式。
<style name="MyRadioButton" parent="Theme.AppCompat.Light">
<item name="colorControlNormal">@color/indigo</item>
<item name="colorControlActivated">@color/pink</item>
</style>
II。通过android:theme属性将此样式应用于RadioButton。
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Radio Button"
android:theme="@style/MyRadioButton"/>