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

mon*_*ack 60 android android-actionbar

关于动作栏上的样式有很多问题,但我发现的那些问题与样式标签有关,或者答案对我不起作用.

问题非常简单.我希望能够更改操作栏中菜单项的文本样式(甚至只是颜色).

我读过这个: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中设置一个动作栏

从中我已经整理了一个测试应用程序,我正在尝试使用以更改菜单项.它使用在eclipse android插件中创建的应用程序的所有默认值,但以下情况除外.

样式文件:

<?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>
Run Code Online (Sandbox Code Playgroud)

操作栏的菜单:

<?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>
Run Code Online (Sandbox Code Playgroud)

主要活动:

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;
}
}
Run Code Online (Sandbox Code Playgroud)

应用程序编译并运行.动作栏标题文本的样式非常完美(是我定义的粉红色#F0F的可爱色调).菜单项不会更改,但会显示默认样式(全息灯).

我究竟做错了什么 ?

Chr*_*ist 60

不要将android:actionMenuTextAppearance项目置于操作栏样式下,而是将其移到应用主题下.

  • 它不适合我:(只使用了primaryTextColor ......但这不是一个正确的解决方案 (3认同)
  • 为了改变颜色<项目名称="机器人:actionMenuTextColor">添加`@颜色/ action_bar_red </项目>`到应用的主题. (3认同)

小智 5

我认为下面的代码

<item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> 
Run Code Online (Sandbox Code Playgroud)

必须在MyAppTheme节。


小智 5

你必须改变

<style name="MyActionBar.MenuTextStyle"
parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title">
Run Code Online (Sandbox Code Playgroud)

<style name="MyActionBar.MenuTextStyle"
parent="android:style/TextAppearance.Holo.Widget.ActionBar.Menu">
Run Code Online (Sandbox Code Playgroud)

以及。这对我有用。


小智 5

我知道它是一个旧帖子,但以防万一有人在这里看.我将它添加到我的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>
Run Code Online (Sandbox Code Playgroud)