首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Styling ActionBar下拉菜单

Styling ActionBar下拉菜单
EN

Stack Overflow用户
提问于 2012-07-14 06:29:40
回答 4查看 44.2K关注 0票数 17

我使用的是一个自定义主题,继承自DarkActionBar,我想自定义下拉菜单为白色时,就像使用轻全息主题。

我已经能够使用以下命令将背景更改为白色:

代码语言:javascript
复制
<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>

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-14 18:51:40

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

  • Customize android:spinnerDropDownItemStyle actionBarWidgetTheme changing‘s text appearance.
  • Also不要忘记下拉列表是由您使用的适配器管理的。如果你使用标准的(simple_dropdown_item_1line),那就没有问题了。但如果你使用的是像我这样的自定义工具(为了能够添加图标),别忘了在你的layout TextView中应用 style="?attr/spinnerDropDownItemStyle"

那么最终的自定义样式是:

代码语言:javascript
复制
<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中使用ActionBar Style generator生成的白色背景内容

票数 21
EN

Stack Overflow用户

发布于 2012-07-14 06:59:32

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

票数 3
EN

Stack Overflow用户

发布于 2014-05-08 13:17:15

我偶然发现了做这件事最简单的方法。我正在使用AppCompat库。

代码语言:javascript
复制
<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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11479186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档