如何更改 PopupMenu 中 RadioButton 的颜色?

How do I change color of RadioButtons in PopupMenu?

如何在可检查的 PopupMenu 中设置 RadioButton 的颜色。我使用的是 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>

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

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

来源:

colorAccent 是单选按钮的主要颜色,textColorSecondary 是未选中单选按钮时的辅助颜色。在 AppCompat 中使用 colorAccent 时,请注意没有 android: 前缀,这是在 Lollipop

以下版本中使用它的正确方法

一个简单的方法Android Holo Color 选择主题颜色,打开单选按钮选项,下载 zip 文件,将图片复制到 drwable 并将 XML 文件复制到 drawable 并将它们设置为

here

根据 Galdino 在 的回复,并根据 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