如何更改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>
答案 0 :(得分:0)
基本上,您需要通过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>
你会得到类似截图的东西
(第一个菜单,然后单击第一个菜单上的一个项目后的子菜单 - 粉红色标题是我的子菜单标题)。
只是为了让您知道我没有子菜单的正常菜单看起来像这个层次结构视图:
<menu>
<item/>
<item/>
<item/>
</menu>
和带有子菜单的菜单作为层次结构视图的示例:
<menu>
<item/>
<item/>
<group>
<item>
<menu>
item
item
item
</menu>
</item>
</group>
<item/>
<item/>
</menu>