Изменить цвет текста подменю панели действий Android

Как изменить цвет текста подменю в Android? Я настраиваю тему приложения и переопределяю относительные атрибуты, но она все равно не работает. Мое меню имеет два подменю, которые изначально скрыты, при нажатии на них оно отображается. Тем не менее, стиль подменю не может быть изменен, в то время как заголовок панели действий может. Этот вопрос беспокоит меня весь день, я почти пробую все, что найду. Это мой код!

menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.classsignin.MainActivity" >

<item 
    android:id="@+id/action_overflow"
    android:title="分享"
    android:icon="@drawable/drop_select"
    android:showAsAction="always"
    >
    <menu >
        <item 
            android:id="@+id/absent"
            android:title="请假"
            android:icon="@drawable/absent"
            />
        <item
            android:id="@+id/refresh"
            android:title="刷新课程"
            android:icon="@drawable/refresh"
             />
    </menu>
</item>

styles.xml

<style name="CustomTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
    <item name="android:actionMenuTextAppearance">@style/MyActionBarMenu</item>
    <item name="android:actionMenuTextColor">@color/blue</item>
    <item name="android:homeAsUpIndicator">@drawable/back</item>
    <item name="android:spinnerItemStyle">@style/MySpinnerItem</item>
</style>

<style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@color/white</item>
    <item name="android:titleTextStyle">@style/MyActionBarTitle</item>
</style>

<style name="MyActionBarTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">  
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">@color/blue</item>  
</style>

<style name="MyActionBarMenu" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Menu">  
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">@color/blue</item> 
</style>

<style name="MySpinnerItem" parent="@android:style/Widget.Holo.TextView.SpinnerItem">
   <item name="android:textAppearance">@style/MyTextAppearance</item>
</style>

<style name="MyTextAppearance" parent="@android:style/TextAppearance.Holo.Widget.TextView.SpinnerItem">  
    <item name="android:textColor">@color/blue</item> 
</style>

2 ответа

В представлении навигации по материалам вы можете изменить цвет и внешний вид текста.

      <com.google.android.material.navigation.NavigationView
.....
app:subheaderColor="@color/blue_700"
app:subheaderTextAppearance="@style/titleTextStyle"
...
/>

По сути вы захотите настроить свой MenuItemстиль, имеющий android:itemBackground атрибут переопределен вашим обычаем color/drawable selector в вашем style.xml а также атрибут vtextColor` для переопределения.

В случае, если ваше меню также submenu's, тогда вы захотите также стилизовать header название подменю, которое обычно автоматически с белым фоном путем переопределения атрибута actionBarPopupTheme с вашим custom style,

style.xml

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
        <item name="android:itemBackground">@drawable/menu_popup_selector</item>
        <item name="actionBarPopupTheme">@style/SubmenuHeaderStyle</item>
    </style>

    <style name="SubmenuHeaderStyle" parent="ThemeOverlay.AppCompat.Light">
        <item name="android:colorBackground">@color/colorPrimary</item>
        <item name="android:textColor">@color/colorAccent</item>
    </style>

</resources>

menu_popup_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <color
            android:color="@color/colorPrimary"/>
    </item>
    <item>
        <color
            android:color="#655611"/>
    </item>
</selector>

И у вас будет что-то вроде этих скриншотов
1-е меню Подменю после нажатия пункта в 1-ом меню
(1-е меню и затем подменю после выбора одного элемента в 1-м меню - розовый заголовок - мой заголовок подменю).

Просто для того, чтобы вы знали, когда у меня нормальное меню без подменю будет выглядеть следующим образом:

<menu> 
   <item/>
   <item/> 
   <item/> 
</menu> 

и меню с подменю в качестве этого примера представлений иерархии:

<menu> 
   <item/>
   <item/>
   <group> 
     <item> 
       <menu> 
         item 
         item 
         item 
       </menu> 
     </item>
   </group>
   <item/>
   <item/> 
</menu>
Другие вопросы по тегам