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

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

меню.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>

person yinchuandong    schedule 28.02.2015    source источник


Ответы (1)


По сути, вы захотите настроить стиль вашего 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>

И у вас будет что-то вроде этих скриншотов
1st Menu < img src="https://i.stack.imgur.com/yV6KXm.png" alt="Подменю после щелчка элемента в 1-м меню">
(1-е меню, а затем подменю после щелкнув один элемент в 1-м меню — розовый заголовок — это заголовок моего подменю).

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

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

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

<menu> 
   <item/>
   <item/>
   <group> 
     <item> 
       <menu> 
         item 
         item 
         item 
       </menu> 
     </item>
   </group>
   <item/>
   <item/> 
</menu>
person denis_lor    schedule 27.03.2018