Подтвердить что ты не робот

Изменить панель инструментов. Цвет элемента (не скрытое действие).

Скажем, у меня есть меню (options_menu.xml), похожее на следующее:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/action_login"
          android:title="Login"
          app:showAsAction="always"/>
</menu>

который я вдуваю в новый элемент панели инструментов

mToolbar.inflateMenu(R.menu.options_home);

Это приводит к чему-то вроде

enter image description here

Есть ли способ изменить этот цвет текста без использования изображения, изменения остальной части текста на панели инструментов или путем добавления пользовательского представления на панель инструментов? Ищете ответ для minSdk 15 (appcompat).

Update:

Мой соответствующий стиль:

<style name="AppTheme" parent="AppTheme.Base">
    <item name="actionMenuTextColor">@color/ww_red</item>
</style>

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/red</item>
    <item name="colorAccent">@color/theme_accent</item>

    <item name="android:textColor">@color/text_dark</item>

    <item name="android:colorEdgeEffect">@color/gray</item>
</style>
4b9b3361

Ответ 1

В вашем файле темы вы должны указать:

 <style name="AppTheme.ActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
         ...
    <item name="actionMenuTextColor">@color/text_color</item>
         ...
 </style>`

и примените эту тему к виду на панели инструментов следующим образом:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:id="@+id/main_toolbar"
   android:layout_width="match_parent"
   android:layout_height="?attr/actionBarSize"
   android:background="?attr/colorPrimary"
   android:layout_gravity="top"
   app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
   android:theme="@style/AppTheme.ActionBar"/>

android: theme = "@style/AppTheme.ActionBar" не забудьте эту строку на панели инструментов

Ответ 2

Для меня это сработало: установка "android: textColor"

<style name="AppTheme.ActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
        ...
        <!--This would set the menu item color-->
        <item name="android:textColor">#000</item>
        ...
 </style>

Ответ 3

в вашем файле стиля, поставьте следующее:

    <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="android:titleTextStyle">@style/MyActionBar.TitleTextStyle 
        <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item>
        <item name="android:actionMenuTextColor">@color/action_bar_red</item>  
    </style>

    <style name="MyActionBar.TitleTextStyle"
        parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
        <item name="android:textColor">#F0F</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">24dip</item>
    </style>

    <style name="MyActionBar.MenuTextStyle"
        parent="android:style/TextAppearance.Holo.Widget.ActionBar.Menu">
        <item name="android:textColor">#F0F</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">24dip</item>
    </style>


Вы можете вносить изменения в вышеуказанные элементы стиля в соответствии с вашими требованиями. Однако я не добавил отдельный стиль для цвета. Как вы могли заметить, я просто назначаю красный цвет (который я объявил в моем файле цветов). Вы можете изменить по мере необходимости.

Ответ 4

Не уверен, что вы можете установить определенные фоны для разделения MenuItem только путем стилизации, но вы можете просто setActionView для вашего MenuItem.

Сначала создайте макет, например item_av.xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FF0000"
    android:padding="5dp">
    <TextView
        android:text="LOGIN"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textSize="12sp"
        android:gravity="center"/>
</LinearLayout>

Затем установите его в MenuItem в onCreateOptionsMenu:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);

    MenuItem item = menu.findItem(R.id.action_login);
    item.setActionView(R.layout.item_av);

    return true;
}