如何在Android操作栏上设置菜单项的样式

在动作栏上有很多关于样式的问题,但是我发现的那些问题都与样式选项卡相关,或者有不适合我的答案。

这个问题真的很简单。 我希望能够更改操作栏中菜单项的文本样式(即使只是颜色)。

我读过这个: http : //android-developers.blogspot.com/2011/04/customizing-action-bar.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+blogspot%2FhsDu+%28Android+Developers+Blog% 29

而这个问题: 在Android Honeycomb中设置一个Action Bar

从中我已经整理了一个testing应用程序,我正在使用它来尝试更改菜单项。 它使用eclipse android插件中创build的应用程序的所有默认值,除了以下内容。

样式文件:

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyActionBar</item> </style> <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:titleTextStyle">@style/MyActionBar.TitleTextStyle</item> <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</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.Title"> <item name="android:textColor">#F0F</item> <item name="android:textStyle">bold</item> <item name="android:textSize">24dip</item> </style> </resources> 

操作栏的菜单:

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:showAsAction="always|withText" android:icon="@android:drawable/ic_menu_edit" android:id="@+id/menu_item1" android:title="menu_item1"></item> <item android:showAsAction="always|withText" android:icon="@android:drawable/ic_menu_edit" android:id="@+id/menu_item2" android:title="menu_item2"></item> </menu> 

主要活动:

 public class Main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } /** * Create the options menu that is shown on the action bar */ @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); return true; } } 

应用程序编译并运行。 动作条标题文本的样式非常完美(是我定义的粉色#F0F的可爱阴影)。 菜单项不会改变,但是使用默认样式(全光照)。

我究竟做错了什么 ?

在您的操作栏样式下不使用android:actionMenuTextAppearance项目,而是将其移动到您的应用程序主题下。

我知道这是一个旧的post,但以防万一谁在这里看。 我将其添加到我的style.xml,它为我工作。

 <!-- This is the main theme parent --> <style name="MyTabStyle"> <item name="android:actionBarTabTextStyle">@style/MyTabTextStyle</item> </style> <style name="MyTabTextStyle" parent="@android:style/Widget.ActionBar.TabText"> <item name="android:textAppearance">@android:style/TextAppearance.Medium</item> <item name="android:textSize">14sp</item> <item name="android:textStyle">bold</item> <item name="android:textColor">@color/pressed_skylogtheme</item> </style> 

我想下面的代码

 <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> 

必须在MyAppTheme部分。

你必须改变

 <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 

 <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Menu"> 

以及。 这对我有用。

克里斯答案正在为我工​​作…

我的值-V11 / styles.xml文件:

 <resources> <style name="LightThemeSelector" parent="android:Theme.Holo.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/ActionBar</item> <item name="android:editTextBackground">@drawable/edit_text_holo_light</item> <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> </style> <!--sets the point size to the menu item(s) in the upper right of action bar--> <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textSize">25sp</item> </style> <!-- sets the background of the actionbar to a PNG file in my drawable folder. displayOptions unset allow me to NOT SHOW the application icon and application name in the upper left of the action bar--> <style name="ActionBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">@drawable/actionbar_background</item> <item name="android:displayOptions"></item> </style> <style name="inputfield" parent="android:Theme.Holo.Light"> <item name="android:textColor">@color/red2</item> </style> </resources> 

我的猜测是,您还必须设置从onCreateOptionsMenu()中的菜单信息生成的视图的样式。 你到目前为止应用的样式正在工作,但我怀疑菜单项,使用文本呈现使用的样式是与ActionBar的标题部分相同。

您可能想要查看Menu.getActionView()以获取菜单操作的视图,然后相应地调整它。

我这样做了:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="actionMenuTextAppearance">@style/MenuTextAppearance</item> <item name="android:actionMenuTextAppearance">@style/MenuTextAppearance</item> <item name="actionMenuTextColor">@color/colorAccent</item> </style> <style name="MenuTextAppearance" > <item name="android:textAppearance">@android:style/TextAppearance.Large</item> <item name="android:textSize">20sp</item> <item name="android:textStyle">bold</item> </style>