2012-07-13 97 views
17

我正在使用自定義主題,從DarkActionBar繼承,我想要自定義下拉菜單是白色,如使用光全息主題時。樣式ActionBar下拉菜單

我已經能夠背景更改爲白色使用:

<style name="MyTheme" parent="@style/Theme.Light.DarkActionBar"> 
    <item name="android:actionDropDownStyle">@style/MyDropDownNav</item> 
</style> 
<style name="MyDropDownNav"> 
    <item name="android:background">@drawable/spinner_background_white</item> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_whyite</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_white</item> 
</style> 

但我還沒有怎麼改變文字顏色爲黑色的任何線索。因爲在設置白色可繪製之後問題在於文本不可見,因爲在白色背景上是白色的。

回答

21

我經過一番調查後回答自己。 除了質疑的造型,你需要:

  • 自定義android:spinnerDropDownItemStyleactionBarWidgetTheme改變它的文本外觀。
  • 另外不要忘記,下拉列表是由您使用的適配器管理的。那麼如果你使用標準的(simple_dropdown_item_1line),那就沒有問題了。但是,如果您使用像我這樣的自定義(可以添加圖標)不要忘記在佈局TextView中應用style="?attr/spinnerDropDownItemStyle"

然後最終的自定義樣式是:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

<style name="Theme.myapp" parent="@style/Theme.Light.DarkActionBar"> 
    <item name="android:actionDropDownStyle">@style/myapp_DropDownNav</item>   
    <item name="android:actionBarWidgetTheme">@style/myapp.actionBarWidgetTheme</item> 
</style> 

<style name="myapp.actionBarWidgetTheme" parent="@style/Theme."> 
    <item name="android:spinnerDropDownItemStyle">@style/myapp.Widget.DropDownItem.Spinner</item> 
</style> 

<style name="myapp_DropDownNav" parent="@style/Widget.Spinner.DropDown.ActionBar"> 
    <item name="background">@drawable/spinner_background_ab_myapp</item> 
    <item name="android:background">@drawable/spinner_background_ab_myapp</item> 
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_myapp</item> 
    <item name="android:dropDownSelector">@drawable/selectable_background_myapp</item> 
</style> 

<style name="myapp.Widget.DropDownItem.Spinner" parent="Widget.DropDownItem.Spinner"> 
    <item name="android:textAppearance">@style/myapp.TextAppearance.Widget.DropDownItem</item> 
</style> 

<style name="myapp.TextAppearance.Widget.DropDownItem" parent="TextAppearance.Widget.DropDownItem"> 
    <item name="android:textColor">@color/black</item> 
</style> 

myapp_DropDownNav可繪有白色背景的,你可以在Android Asset Studio

+5

不適用於API 19 – 2014-01-10 14:51:19

0

ActionBar Style generator產生我的建議是簡單地繼承Sherlock.Light主題,並將適用的字段更改爲Dark值。對於我的應用程序,我們需要一個白色的「向上」圖標,以及動作標籤的白色文本。我不提供我的操作欄圖標的黑色版本,所以它們都是白色的。因此,經過幾個小時的調整並遵循不同的人的建議,我終於找到了我在ABS主題文件中尋找的內容。

我從Sherlock.Light繼承(當然,技術上HoloEverywhereLight.Sherlock但是......)和變化:

<item name="android:actionMenuTextColor">@color/White</item> 
<item name="actionMenuTextColor">@color/White</item> 
<item name="android:homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item> 
<item name="homeAsUpIndicator">@drawable/abs__ic_ab_back_holo_dark</item> 
<item name="android:dividerVertical">@drawable/abs__list_divider_holo_dark</item> 
<item name="dividerVertical">@drawable/abs__list_divider_holo_dark</item> 

就是這樣。它比試圖擴展類,在代碼中重新編碼等方式更簡單,更容易。

2

我偶然發現了什麼可能是最簡單的方法。我正在與AppCompat圖書館合作。

<style name="ApplicationTheme" parent="@style/Theme.AppCompat"> 
    <item name="android:actionBarWidgetTheme">@style/Theme.AppCompat.Light</item> 
    <item name="actionBarWidgetTheme">@style/Theme.AppCompat.Light</item> 
</style> 
+0

卓越!但我認爲它只能用於Light.DarkActionBar主題。 – rubenlop 2014-09-13 18:52:47