Изменить цвет текста в меню опций, когда мы используем приложение: showAsAction=always

Я использую панель инструментов и использую опцию для соответствующих действий. Моя проблема в том, что я хочу показать текст «СОХРАНИТЬ» на панели инструментов белым цветом, я применяю много стилей, но он всегда отображается черным. Но когда опция появляется как всплывающее окно, цвет текста всегда белый. Я много гуглю, но решения нет.

Вот мой код:

панель инструментов

<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;
        }

person EminenT    schedule 21.04.2015    source источник


Ответы (2)


Использовать

<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

person Konrad Krakowiak    schedule 21.04.2015
comment
Это не работает :( - person EminenT; 21.04.2015
comment
Может быть, я вас не понял. Вы хотите изменить текст пункта меню на панели действий? Это так? Если да, это должно работать. Вы добавили свой стиль в Activity в манифесте? - person Konrad Krakowiak; 21.04.2015
comment
Да, я хочу именно то, что вы говорите, и я добавил эту тему в то время как приложение в теге приложения как - person EminenT; 21.04.2015
comment
‹application android:name=.utils.AppData android:allowBackup=true android:icon=@mipmap/ic_launcher android:label=@string/app_name android:theme=@style/MStyle › - person EminenT; 21.04.2015
comment
Попробуйте добавить его для тега активности: ‹activity android:name=.YourActivity android:theme=@style/MStyle - person Konrad Krakowiak; 21.04.2015
comment
Это очень странно для меня, потому что в моем примере это работает нормально. - person Konrad Krakowiak; 21.04.2015
comment
Давайте продолжим обсуждение в чате. - person EminenT; 21.04.2015
comment
@KonradKrakowiak это работает в 5.0, но не в 4.0 ..? Как сделать то же самое для всех версий - person Amardeepvijay; 27.07.2015
comment
любой конкретный пример. в разных версиях API много путаницы. - person Sagar Nayak; 01.04.2016

Чтобы изменить цвет текста в меню Toolbar, используйте приведенный ниже код.

<style name="MStyle" parent="Theme.AppCompat.Light.NoActionBar">
         ....   

           <item name="actionMenuTextColor">#FFFFFF</item>

</style>
person Pooja    schedule 21.04.2015