更改小部件颜色。 Appcompat 21

时间:2014-10-25 12:55:04

标签: android android-appcompat

是否可以使用appcompat 21更改特定小部件的颜色?其实我对RadioButton的颜色很感兴趣。

我读到它可能在api 21+上。但旧api怎么样?

3 个答案:

答案 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/

enter image description here

予。在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"/>