我正在使用继承自DarkActionBar
的自定义主题,并且我希望自定义下拉菜单为白色,就像使用Light Holo主题一样。
我已经能够使用以下方法将背景更改为白色:
<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>
但我没有任何关于如何将文字颜色改为黑色的线索。因为在设置白色可绘制之后,问题是文本不可见,因为白色背景上是白色。
答案 0 :(得分:21)
android:spinnerDropDownItemStyle
actionBarWidgetTheme
更改文字外观。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是白色背景的,您可以使用ActionBar Style generator中的Android Asset Studio生成
答案 1 :(得分:3)
尝试设置itemTextAppearance
。那应该达到你想要的效果。
答案 2 :(得分: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>
答案 3 :(得分:0)
我的建议是简单地从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>
就是这样。它比尝试扩展类,代码中的东西等更简单,更容易。