2016-07-15 111 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