【问题标题】:Android menu background black with Theme.AppCompat?带有 Theme.AppCompat 的 Android 菜单背景变黑?
【发布时间】:2015-05-30 18:13:10
【问题描述】:

由于某种原因,在我的应用程序中,当使用“Theme.AppCompat”作为我的样式时,它会使我的菜单黑色文本(因为我想要黑色文本而设置)在深灰色背景上,如下所示:

我尝试使用一些在线资源手动设置菜单的背景颜色,但似乎都没有效果。有谁知道可能导致问题的原因?下面是我的 style.xml,如您所见,主应用程序主题条目中的两个底部元素是我尝试使用我在网上找到的东西来更改背景颜色。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
    <item name="windowActionBar">false</item>
    <item name="android:windowBackground">@color/white_primary</item>
    <item name="android:textColor">@color/text_primary</item>
    <item name="android:textSize">@dimen/text_size_medium</item>
    <item name="colorAccent">@color/black_primary</item>
    <item name="android:popupMenuStyle">@style/PopupMenuStyle</item>
    <item name="android:panelFullBackground">@drawable/menu_full_bg</item>
</style>

<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
    <item name="android:popupBackground">@android:color/white</item>
</style>

<drawable name="menu_full_bg">#FFFFFF</drawable>

【问题讨论】:

    标签: android xml colors android-actionbar android-actionbar-compat


    【解决方案1】:

    我尝试将其添加到工具栏中:

    app:popupTheme="@style/Theme.AppCompat.Light"
    

    但是在夜间模式下,背景将是白色的,文本也是白色的。 (这仅在白天模式下有用,或者您的应用不遵循日/夜切换)

    另一种尝试,我为菜单弹出添加了这种样式,正如上面Pojaa所说:

    <style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
         <item name="android:background">@android:color/white</item>
    </style>
    

    但是这会产生一种效果:当您单击菜单时,它首先显示弹出菜单的白色背景(白色背景),然后显示项目,这非常不利于用户体验。也许Android会随着时间的推移而改变,体验会有所不同!

    您应该按照自己的意愿尝试一下:

    app:popupTheme="@style/Theme.AppCompat.DayNight"
    

    这是迟到的答案,但希望对其他人有所帮助!

    【讨论】:

      【解决方案2】:

      我所做的是将我的 popUpTheme 更改为 DayNight 所以使用

      app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight">
      

      `

      【讨论】:

        【解决方案3】:

        我不赞成这一行:

            <item name="android:background">@android:color/white</item>
        

        在我的设备上,菜单弹出动画表现得相当丑陋。相反,只需使用它就足够了:

        <style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
        </style>
        

        【讨论】:

          【解决方案4】:

          要更改工具栏选项菜单颜色,请将其添加到您的工具栏元素

          app:popupTheme="@style/MyDarkToolbarStyle"
          

          然后在你的styles.xml中定义弹出菜单样式

          <style name="MyDarkToolbarStyle" parent="ThemeOverlay.AppCompat.Light">
              <item name="android:colorBackground">@color/mtrl_white_100</item>
              <item name="android:textColor">@color/mtrl_light_blue_900</item>
          </style>
          

          请注意,您需要使用颜色背景而不是背景。后者适用于所有内容(菜单本身和每个菜单项),前者仅适用于弹出菜单。

          【讨论】:

            【解决方案5】:

            您可以只使用 appNS 来定义 popupTheme,如下所示。

            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            

            【讨论】:

              【解决方案6】:

              不确定这是否有帮助。这可能是一个更简单的解决方案。在 AppCompat - theme_base.xml 中,您将找到以下部分。

              <!-- Panel attributes -->
                          <item name="panelMenuListWidth">@dimen/abc_panel_menu_list_width</item>
                          <item name="panelMenuListTheme">@style/Theme.AppCompat.CompactMenu</item>
                          <item name="panelBackground">@drawable/abc_menu_hardkey_panel_mtrl_mult</item>
                          <item name="android:panelBackground">@android:color/transparent</item>
                          <item name="listChoiceBackgroundIndicator">@drawable/abc_list_selector_holo_dark</item>
              

              在您的应用中创建主题并应用颜色。

              <style name="Theme.Base" parent="@style/Theme.AppCompat.Light.DarkActionBar">
                      <item name="android:panelBackground">@android:color/black</item>
                  </style>
              

              【讨论】:

                【解决方案7】:

                参考这个link

                这里接受的答案对我有用。我只是在这里再次重复相同的答案。 将以下内容添加到您的工具栏 xml

                <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
                                                   xmlns:app="http://schemas.android.com/apk/res-auto"
                                                   android:layout_width="fill_parent"
                                                   android:layout_height="wrap_content"
                                                   android:background="@color/toolbarbackground"
                                                   android:elevation="4dp"
                                                   app:popupTheme="@style/YOUR_THEME_HERE"
                                                   android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                    >
                

                在你的styles.xml中:

                 <style name="YOUR_THEME_HERE" parent="ThemeOverlay.AppCompat.Light">
                        <item name="android:colorBackground">#000000</item>
                        <item name="android:textColor">#ffffff</item>
                    </style>
                

                上面的样式在黑色背景上给出了白色字体。

                感谢#Eugen Pechanec

                【讨论】:

                  【解决方案8】:

                  您可以更改弹出菜单的背景颜色,如下所示。

                  1. 在你的styles.xml中创建一个样式

                    <style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
                         <item name="android:background">@android:color/white</item>
                    </style>
                    
                  2. 在您的toolbar.xml 中将此主题设置为您的toolbar 弹出主题

                     <android.support.v7.widget.Toolbar     
                        xmlns:app="http://schemas.android.com/apk/res-auto"    
                        xmlns:android="http://schemas.android.com/apk/res/android"
                    
                            // Your code here
                           app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                           app:popupTheme="@style/PopupMenuStyle" />
                    

                  希望这会有所帮助。

                  【讨论】:

                  • 你是我的英雄。我很高兴我可以哭了。我不敢相信我找到了一个真正适用于 5.1.1 的解决方案。
                  • 这对我不起作用,但this 起作用了。
                  猜你喜欢
                  • 2014-12-01
                  • 2011-07-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多