Android 菜单背景黑色 Theme.AppCompat?
Android menu background black with Theme.AppCompat?
出于某种原因,在我的应用程序中,当使用 "Theme.AppCompat" 作为我的样式时,它使我的菜单黑色文本(我设置它是因为我想要黑色文本)在深灰色背景上,如下所示:
我尝试使用一些在线资源手动设置菜单的背景颜色,但 none 似乎有效。有谁知道可能导致问题的原因是什么?下面是我的 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>
您可以更改弹出菜单的背景颜色,如下所示。
在您的styles.xml
中创建样式
<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
<item name="android:background">@android:color/white</item>
</style>
将此主题设置为 toolbar
弹出式主题 toolbar.xml
<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" />
希望对您有所帮助。
参考这个
这里接受的答案对我有用。我只是在这里再次重复相同的答案。
将以下内容添加到您的工具栏 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
不确定这是否有帮助。这可能是一个更简单的解决方案。在 AppCompat - themes_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>
您可以只使用 appNS 来定义 popupTheme,如下所示。
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
要更改工具栏选项菜单颜色,请将其添加到您的工具栏元素
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>
请注意,您需要使用 colorBackground 而不是背景。后者适用于所有内容(菜单本身和每个菜单项),前者仅适用于弹出菜单。
我不鼓励这条线:
<item name="android:background">@android:color/white</item>
在我的设备上,菜单弹出动画表现得相当丑陋。相反,只使用这个就足够了:
<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
</style>
我所做的是将 popUpTheme 更改为 DayNight,所以使用
app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight">
`
我试图将其添加到工具栏中:
app:popupTheme="@style/Theme.AppCompat.Light"
但在夜间模式下,背景将为白色,文字也是白色。
(这仅在白天模式下有用,或者您的应用不遵循 Day/Night 开关)
又试了一次,我给弹出菜单加了这个样式,上面Pojaa说的:
<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
<item name="android:background">@android:color/white</item>
</style>
但是这样会造成一个效果:当你点击菜单的时候,会先显示弹出菜单的白色背景(white background),然后再显示items,这很不利于用户体验。也许Android随着时间的推移,体验会有所不同!
您应该按照自己的意愿尝试一下:
app:popupTheme="@style/Theme.AppCompat.DayNight"
这是一个迟到的答案,但希望它能帮助其他人!
出于某种原因,在我的应用程序中,当使用 "Theme.AppCompat" 作为我的样式时,它使我的菜单黑色文本(我设置它是因为我想要黑色文本)在深灰色背景上,如下所示:
我尝试使用一些在线资源手动设置菜单的背景颜色,但 none 似乎有效。有谁知道可能导致问题的原因是什么?下面是我的 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>
您可以更改弹出菜单的背景颜色,如下所示。
在您的styles.xml
中创建样式<style name="PopupMenuStyle" parent="Theme.AppCompat.Light"> <item name="android:background">@android:color/white</item> </style>
将此主题设置为
toolbar
弹出式主题toolbar.xml
<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" />
希望对您有所帮助。
参考这个
这里接受的答案对我有用。我只是在这里再次重复相同的答案。 将以下内容添加到您的工具栏 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
不确定这是否有帮助。这可能是一个更简单的解决方案。在 AppCompat - themes_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>
您可以只使用 appNS 来定义 popupTheme,如下所示。
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
要更改工具栏选项菜单颜色,请将其添加到您的工具栏元素
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>
请注意,您需要使用 colorBackground 而不是背景。后者适用于所有内容(菜单本身和每个菜单项),前者仅适用于弹出菜单。
我不鼓励这条线:
<item name="android:background">@android:color/white</item>
在我的设备上,菜单弹出动画表现得相当丑陋。相反,只使用这个就足够了:
<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
</style>
我所做的是将 popUpTheme 更改为 DayNight,所以使用
app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight">
`
我试图将其添加到工具栏中:
app:popupTheme="@style/Theme.AppCompat.Light"
但在夜间模式下,背景将为白色,文字也是白色。 (这仅在白天模式下有用,或者您的应用不遵循 Day/Night 开关)
又试了一次,我给弹出菜单加了这个样式,上面Pojaa说的:
<style name="PopupMenuStyle" parent="Theme.AppCompat.Light">
<item name="android:background">@android:color/white</item>
</style>
但是这样会造成一个效果:当你点击菜单的时候,会先显示弹出菜单的白色背景(white background),然后再显示items,这很不利于用户体验。也许Android随着时间的推移,体验会有所不同!
您应该按照自己的意愿尝试一下:
app:popupTheme="@style/Theme.AppCompat.DayNight"
这是一个迟到的答案,但希望它能帮助其他人!