Ответ 1
Вместо того, чтобы иметь элемент android:actionMenuTextAppearance
под вашим стилем действия, переместите его под своей темой приложения.
Было много вопросов по стилю на панели действий, но те, которые я нашел, касаются стилизации вкладок или ответов, которые не работают для меня.
Вопрос действительно довольно прост. Я хочу иметь возможность изменять стиль текста (даже просто цвет) элементов меню на панели действий.
И этот вопрос: Стиль панели действий в 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>
Меню панели действий:
<?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
под вашим стилем действия, переместите его под своей темой приложения.
Я знаю его старый пост, но на всякий случай кто-то ищет здесь. Я добавил это в свой 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>