6

По какой-то причине в моем приложении при использовании «Theme.AppCompat» в качестве моего стиля он делает черный текст моего меню (который я установил с тех пор, как хочу черный текст) на темно-сером фоне, как показано здесь:Фон Android меню черный с Theme.AppCompat?

screenshot

Я попытался вручную установить цвет фона меню, используя несколько онлайн-ресурсов, но ни один из них не работает. Кто-нибудь знает, что может вызвать проблему? Ниже мой 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> 

ответ

18

Вы можете изменить цвет фона всплывающего меню, как показано ниже.

  1. Создать стиль в вашем styles.xml

    <style name="PopupMenuStyle" parent="Theme.AppCompat.Light"> 
        <item name="android:background">@android:color/white</item> 
    </style> 
    
  2. Set эту тему в качестве 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" /> 
    

Надеется, что это помогает.

+2

Ты мой герой. Я так счастлив, что могу плакать. Я не могу поверить, что нашел решение, которое действительно работает на 5.1.1. – Sam

+0

@Sam Спасибо man :) – Pooja

+0

очень приятно большое вам спасибо – Uthaya

0

См этого 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

0

Не уверен, если это это поможет. Это может быть более простое решение. Внутри 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> 
2

Вы можете просто использовать appNS для определения popupTheme, как показано ниже.

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

Чтобы изменить цвет меню опций панели инструментов, добавить к вашей панели инструментов элемента

app:popupTheme="@style/MyDarkToolbarStyle" 

Тогда в ваших стилях.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, а не фон. Последний будет применяться ко всему (самому меню и каждому пункту меню), первый применяется только к всплывающему меню.