使用 app:showAsAction="always" 时更改选项菜单的文本颜色
Change text color of option menu when we use app:showAsAction="always"
我正在使用工具栏并使用选项进行相应的操作。我的问题是我想在工具栏上用白色显示 "SAVE" 文本,我应用了很多样式但它总是显示为黑色。 But when option appear as popup then text color is always white .我google这个很多,但是没有办法。
这是我的代码:
工具栏
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
android:id="@+id/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@android:style/ThemeOverlay.Material.Light"
app:popupTheme="@style/Theme.AppCompat.NoActionBar"
android:background="@drawable/tb_header"
android:minHeight="?attr/actionBarSize"/>
样式
<style name="MStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@android:color/white</item>
<item name="android:colorBackground">@android:color/black</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:textAllCaps">false</item>
<item name="android:popupMenuStyle">@style/MyPopupMenu</item>
<item name="android:panelBackground">@android:color/holo_green_light</item>
<item name="android:actionBarWidgetTheme">@style/AppTheme</item>
</style>
<style name ="MyPopupMenu" parent="android:Theme.Holo.Light">
<item name="android:popupBackground">@android:color/holo_green_light</item>
</style>
****Option menu****
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.doubtfire.userprofiles.ParentProfileActivity">
<item
android:id="@+id/action_skip"
android:title="@string/menu_str_skip"
android:orderInCategory="100"
app:showAsAction="always" />
</menu>
****I even apply code at onPrepareOptionMenu****
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
for (int i=0; i<menu.size(); i++) {
MenuItem mi = menu.getItem(i);
String title = mi.getTitle().toString();
Spannable newTitle = new SpannableString(title);
newTitle.setSpan(new ForegroundColorSpan(Color.WHITE), 0, newTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mi.setTitle(newTitle);
}
return true;
}
使用
<item name="android:actionMenuTextColor">#FFFFFF</item>
在MStyle
中,如下图:
<style name="MStyle" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:actionMenuTextColor">#FFFFFF</item>
<!-- for appcompat-->
<item name="actionMenuTextColor">#FFFFFF</item>
</style>
当保存项在 ActionBar
上可见时,此更改菜单项的颜色
要更改 Toolbar
菜单中文本的颜色,请使用以下代码。
<style name="MStyle" parent="Theme.AppCompat.Light.NoActionBar">
....
<item name="actionMenuTextColor">#FFFFFF</item>
</style>
我正在使用工具栏并使用选项进行相应的操作。我的问题是我想在工具栏上用白色显示 "SAVE" 文本,我应用了很多样式但它总是显示为黑色。 But when option appear as popup then text color is always white .我google这个很多,但是没有办法。
这是我的代码:
工具栏
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
android:id="@+id/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@android:style/ThemeOverlay.Material.Light"
app:popupTheme="@style/Theme.AppCompat.NoActionBar"
android:background="@drawable/tb_header"
android:minHeight="?attr/actionBarSize"/>
样式
<style name="MStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@android:color/white</item>
<item name="android:colorBackground">@android:color/black</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:textAllCaps">false</item>
<item name="android:popupMenuStyle">@style/MyPopupMenu</item>
<item name="android:panelBackground">@android:color/holo_green_light</item>
<item name="android:actionBarWidgetTheme">@style/AppTheme</item>
</style>
<style name ="MyPopupMenu" parent="android:Theme.Holo.Light">
<item name="android:popupBackground">@android:color/holo_green_light</item>
</style>
****Option menu****
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.doubtfire.userprofiles.ParentProfileActivity">
<item
android:id="@+id/action_skip"
android:title="@string/menu_str_skip"
android:orderInCategory="100"
app:showAsAction="always" />
</menu>
****I even apply code at onPrepareOptionMenu****
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
for (int i=0; i<menu.size(); i++) {
MenuItem mi = menu.getItem(i);
String title = mi.getTitle().toString();
Spannable newTitle = new SpannableString(title);
newTitle.setSpan(new ForegroundColorSpan(Color.WHITE), 0, newTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mi.setTitle(newTitle);
}
return true;
}
使用
<item name="android:actionMenuTextColor">#FFFFFF</item>
在MStyle
中,如下图:
<style name="MStyle" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:actionMenuTextColor">#FFFFFF</item>
<!-- for appcompat-->
<item name="actionMenuTextColor">#FFFFFF</item>
</style>
当保存项在 ActionBar
要更改 Toolbar
菜单中文本的颜色,请使用以下代码。
<style name="MStyle" parent="Theme.AppCompat.Light.NoActionBar">
....
<item name="actionMenuTextColor">#FFFFFF</item>
</style>