Изменить цвет текста подменю панели действий 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-м меню - розовый заголовок - мой заголовок подменю).
Просто для того, чтобы вы знали, когда у меня нормальное меню без подменю будет выглядеть следующим образом:
<menu>
<item/>
<item/>
<item/>
</menu>
и меню с подменю в качестве этого примера представлений иерархии:
<menu>
<item/>
<item/>
<group>
<item>
<menu>
item
item
item
</menu>
</item>
</group>
<item/>
<item/>
</menu>