Search code examples
androidactionbarsherlock

Android ActionBarSherlock Changing Text Color of MenuItem


I have:

 <style name="AppTheme" parent="Theme.Sherlock.Light">
       <item name="actionBarStyle">@style/AppTheme.ActionBar</item>     
       <item name="actionMenuTextColor">#fff</item>
 </style>

 <style name="AppTheme.ActionBar" parent="@style/Widget.Sherlock.ActionBar">
         <item name="android:textStyle">@style/AppTheme.ActionBar.Text</item>
 </style>

 <style name="AppTheme.ActionBar.Text" parent="@android:style/TextAppearance">
          <item name="android:textColor">#fff</item>
 </style>

and in option_menu.xml

<item
        android:id="@+id/menu_save"

        android:showAsAction="always"
        android:title="@string/save"
        android:visible="true"/> 

and i tried this

and this

SpannableString s = new SpannableString(menu.findItem(R.id.menu_save).getTitle());
        s.setSpan(new ForegroundColorSpan(Color.WHITE), 0, s.length(), 0);      
        menu.findItem(R.id.menu_save).setTitle(s);

But text of this item still black. How can i change it to white?


Solution

  • Ok, i did it by setting actionViewClass:

     <item
            android:id="@+id/context_menu_save"
            android:actionViewClass="ru.seopult.cybermarketing.view.TextViewPlus"
            android:showAsAction="always"
            android:title="@string/save"
            android:visible="false"/> 
    

    and in style.xml:

    <style name="AppTheme.ActionBar.TextButton" parent="AppTheme">
            <item name="android:textSize">15sp</item> 
            <item name="android:textColor">#FFFFFF</item>    
        </style>
    

    then in onCreateOptionsMenu wrote:

    TextViewPlus text = ((TextViewPlus)menu.findItem(R.id.context_menu_save).getActionView());
            text.setTextAppearance(getActivity().getApplicationContext(), R.style.AppTheme_ActionBar_TextButton);
            text.setText(menu.findItem(R.id.context_menu_save).getTitle());
            text.setPadding(0, 0, 10, 0);