2016-07-15 91 views
0

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

这是我到目前为止;

<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> 

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

回答

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

+0

你救了我一天。谢谢! 不明白为什么风格不能应用于活动主题: @ style/MyPopupTheme 它不起作用( –

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是因为它说二次当未选择的单选按钮。当AppCompat笔记使用colorAccent没有android:前缀,这是使用它下面Lollipop

+0

从技术上讲,这是对的,但你只能通过更改主题为整个活动或应用程序,这是不是我所需要做到这一点。我只想专门改变PopupMenu中的所有颜色。 – lionscribe

+0

我已经在可接受的解决方案中引用了您的回复。谢谢。 – lionscribe

-1

版本的一个简单方法Android Holo Color 选择主题颜色,在单选按钮选项的正确方法,下载压缩文件拷贝图片到drwable和XML文件复制到可绘制,并将它们设置为

here