Il y a eu beaucoup de questions sur le style sur les barres d'action, mais celles que j'ai trouvées concernent le style des onglets ou ont des réponses qui ne me conviennent pas.
La question est vraiment très simple. Je veux pouvoir modifier le style du texte (même juste la couleur) des éléments de menu dans la barre d’action.
Et cette question: Style d'une barre d'action dans Android Honeycomb
À partir de laquelle j'ai mis au point une application de test que j'utilise pour essayer de modifier les éléments de menu. Il utilise toutes les valeurs par défaut pour une application créée dans le plug-in Eclipse Android, à l'exception des suivantes.
Un fichier de styles:
<?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>
Un menu pour la barre d'action:
<?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>
L'activité principale:
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;
}
}
L'application compile et s'exécute. Le style du texte du titre de la barre d’action fonctionne parfaitement (c’est cette belle nuance de rose # F0F que j’ai définie). Les éléments de menu ne changent pas mais apparaissent avec un style par défaut (holo light).
Qu'est-ce que je fais mal ?
Au lieu d'avoir l'élément Android:actionMenuTextAppearance
sous votre style de barre d'action, déplacez-le sous le thème de votre application.
Je sais que c'est un ancien post, mais au cas où quelqu'un regarderait ici. J'ai ajouté ceci à mon style.xml et cela a fonctionné pour moi.
<!-- 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>
Je pense que le code ci-dessous
<item name="Android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item>
doit être dans la section MyAppTheme
.
Tu dois changer
<style name="MyActionBar.MenuTextStyle"
parent="Android:style/TextAppearance.Holo.Widget.ActionBar.Title">
à
<style name="MyActionBar.MenuTextStyle"
parent="Android:style/TextAppearance.Holo.Widget.ActionBar.Menu">
ainsi que. Cela fonctionne pour moi.
J'ai fait comme ça:
<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>
Chris answer travaille pour moi ...
Mon fichier values-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>
Mon hypothèse est que vous devez également styler les vues générées à partir des informations de menu de votre onCreateOptionsMenu (). Le style que vous avez appliqué jusqu'ici fonctionne, mais je doute que les éléments de menu, lorsqu'ils sont rendus avec du texte, utilisent un style identique à celui du titre de la barre d'actions.
Vous souhaiterez peut-être consulter Menu.getActionView () pour obtenir la vue de l’action de menu, puis l’ajuster en conséquence.
BottomNavigationView navigation = (BottomNavigationView) findViewById (R.id.navigation);
TextView textView = (TextView) navigation.findViewById(R.id.navigation_home).findViewById(R.id.smallLabel);
textView.setTypeface(Typeface.DEFAULT_BOLD);
textView = (TextView) navigation.findViewById(R.id.navigation_home).findViewById(R.id.largeLabel);
textView.setTypeface(Typeface.DEFAULT_BOLD);