如何在PopupMenu中更改RadioButtons的颜色?

时间:2016-07-15 18:12:16

标签: android android-radiobutton

如何在可检查的RadioButton中设置PopupMenu的颜色。我正在使用AppCompat版本。我通过样式成功设置了背景颜色和文本颜色,但我无法弄清楚如何设置单选按钮的颜色。

这是我到目前为止所拥有的;

    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="popupMenuStyle">@style/myPopupMenuStyle</item>
        <item name="textAppearanceLargePopupMenu">@style/myPopupMenuTextAppearanceLarge</item>
        <item name="textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceSmall</item>
    </style>

   <style name="myPopupMenuStyle" parent="Widget.AppCompat.PopupMenu">
        <item name="android:popupBackground">@color/accent</item>
        <item name="android:textColor">@android:color/white</item>
    </style>


   <style name="myPopupMenuTextAppearanceSmall" parent="TextAppearance.AppCompat.Widget.PopupMenu.Small">
        <item name="android:textColor">@android:color/white</item>
    </style>

    <style name="myPopupMenuTextAppearanceLarge" parent="TextAppearance.AppCompat.Widget.PopupMenu.Large">
        <item name="android:textColor">@android:color/white</item>
    </style>

我尝试了许多其他属性,但没有任何帮助。

3 个答案:

答案 0 :(得分:2)

<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="colorAccent">@color/radio_button_color</item>
    <item name="android:textColorSecondary">@color/radio_button_color2</item>
</style>

来源:https://stackoverflow.com/a/26850668/1269953

colorAccent是您的单选按钮的主要颜色,而textColorSecondary就像没有选择单选按钮时的辅助颜色一样。在colorAccent中使用AppCompat时请注意,没有android:前缀,这是在Lollipop以下版本上使用它的正确方法

答案 1 :(得分:1)

根据Galdino在https://stackoverflow.com/a/34702166/2661303的回复,并根据Pztar的回复,以及一些反复试验,我找到了解决方案。我正在使用AppCompat PopupMenu 只需在样式文件中添加以下内容(无需向主题添加任何内容);

<style name="MyPopupTheme" parent="Widget.AppCompat.PopupMenu">
    <item name="colorAccent">@color/primary_dark</item>
    <item name="android:popupBackground">@color/accent</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorSecondary">@android:color/white</item>
</style>

然后在创建PopupMenu时,使用以下内容;

Context wrapper = new ContextThemeWrapper(getActivity(), R.style.MyPopupTheme);
PopupMenu popup = new PopupMenu(wrapper, bAnchor, Gravity.END | Gravity.RIGHT | Gravity.TOP, 0, R.style.MyPopupTheme);

我不知道为什么,但即使使用ContextThemeWrapper,我仍然必须将样式传递给构造函数。当我们使用ContextWrapper时,我们正在为此PopupMenu使用特定主题,因此我们可以仅覆盖PopupMenu的强调颜色。 所以现在我有一个反向的PopupMenu,强调颜色作为背景,文本和按钮为白色,选择按钮为原色。

希望这有助于某人,
Lionscribe

答案 2 :(得分:-1)

简单方法Android Holo Color 选择主题颜色,ON单选按钮选项,下载zip文件复制图片到drwable并将XML文件复制到drawable中并将其设置为

here