【问题标题】:Why does android dropdown menu of action bar look different on Lollipop?为什么 android 的操作栏下拉菜单在 Lollipop 上看起来不一样?
【发布时间】:2015-08-01 01:56:01
【问题描述】:

我正在构建一个 android 应用程序,经过几个月的开发,我现在陷入了一个看起来很愚蠢的问题。

我遇到的问题基本上是下拉菜单(来自操作栏),它根据我的styles.xml 在白色背景上方带有深色文本。但是在不同设备上测试我的应用程序时,我注意到在 Lollipop 上,相同的下拉菜单在深色背景上看起来是深色文本,因此几乎无法阅读文本。

我认为“问题”与原始目录下的文件夹“values-v11”和“values-v14”及其各自的styles.xml有关。尝试使用此文件复制我在主样式.xml 中的部分或全部设置,但没有结果。

这就是我的 styles.xml 文件的样子:

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

<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.
    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:actionBarTabStyle">@style/MyActionBar.Tab</item>
    <item name="android:actionBarTabBarStyle">@style/MyActionBar.TabBar</item>
    <item name="android:icon">@android:color/transparent</item> 
    <item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
    <item name="android:popupMenuStyle">@android:style/Widget.Holo.PopupMenu</item>
    <item name="android:actionBarWidgetTheme">@style/MyActionBarWidget</item>
    <item name="android:dropDownListViewStyle">@android:style/Widget.Holo.Light.ListView.DropDown</item>
</style>

<style name="MyActionBarWidget" parent="android:Theme.Holo.Light">
    <item name="android:popupMenuStyle">@android:style/Widget.Holo.Light.PopupMenu</item>
    <item name="android:dropDownListViewStyle">@android:style/Widget.Holo.Light.ListView.DropDown</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@color/actionbar_background</item>
    <item name="android:titleTextStyle">@style/Theme.MyAppTheme.ActionBar.TitleTextStyle</item>
    <item name="android:subtitleTextStyle">@style/Theme.MyAppTheme.ActionBar.SubTitleTextStyle</item>
</style>

<style name="MyActionBar.Tab">
    <item name="android:background">@drawable/tab_bar_background</item>
    <item name="android:gravity">center</item>
</style>    

<style name="MyActionBar.TabBar">
    <item name="android:background">@color/actionbar_background</item>
</style>

<style name="Theme.MyAppTheme.ActionBar.TitleTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@color/white</item>
</style>

<style name="Theme.MyAppTheme.ActionBar.SubTitleTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle">
    <item name="android:textColor">@color/white</item>
</style>

【问题讨论】:

  • 您应该使用 AppCompat 来帮助您...尝试主题 parent="Theme.AppCompat.Light.DarkActionBar"

标签: android android-actionbar android-styles android-5.1.1-lollipop


【解决方案1】:

在假期“提神”了几个星期后,一回来就意识到是什么造成了问题:

&lt;item name="android:popupMenuStyle"&gt; 有两个相互冲突的定义 “AppTheme”中的一个@android:style/Widget.Holo.PopupMenu “MyActionBarWidget”中的一个@android:style/Widget.Holo.Light.PopupMenu

Lollipop 设备正在拾取“AppTheme”下的设备,问题已通过摆脱它并将其留在“MyActionBarWidget”下进行排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2014-02-10
    • 2021-04-08
    • 2020-04-08
    • 1970-01-01
    相关资源
    最近更新 更多