deviseActionBar下拉菜单

我使用从DarkActionBarinheritance的自定义主题,我想要自定义下拉菜单是白色,如使用光全息主题。

我已经能够改变背景为白色使用:

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

但我没有任何线索如何将文字颜色更改为黑色。 因为在设置白色可绘制之后问题是文本不可见,因为在白色背景上是白色的。

我经过一番调查后回答自己。 除了问题的样式,你需要:

  • 自定义android:spinnerDropDownItemStyle for android:spinnerDropDownItemStyle改变它的文本外观。
  • 另外不要忘记,下拉列表是由您使用的适配器pipe理的。 那么如果你使用的是标准的( 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中的drawables是可以使用Android Asset Studio中的 ActionBar样式生成器生成的白色背景

尝试设置itemTextAppearance 。 这应该达到你想要的。

我偶然发现了什么可能是最简单的方法来做到这一点。 我正在与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> 

我的build议是简单地inheritanceSherlock.Light主题,并将适用的字段更改为Dark值。 对于我的应用程序,我们需要一个白色的“上”图标,白色的文字为动作标签。 我不提供我的操作栏图标的黑色版本,所以它们都是白色的。 所以经过几个小时的debugging,并遵循不同的人的build议,我终于find了我在ABS主题文件中寻找的东西。

我从Sherlock.Lightinheritance(好吧,技术上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> 

而已。 它比试图扩展类,在代码中重新定义事物更简单,更容易