Puis-je changer la couleur d'arrière-plan d'un élément de menu sous Android?
S'il vous plaît laissez-moi savoir si quelqu'un a une solution à cela. La dernière option sera évidemment de le personnaliser, mais existe-t-il un moyen de changer la couleur du texte sans le personnaliser.
Réponses:
Une simple ligne dans votre thème :)
la source
actionBarStyle
par exemple. Cela ne fonctionnera pas à l'intérieuractionBarStyle
, même si cela semble logique!<item name="actionMenuTextColor">@color/your_color</item>
n'utilisez pas l'espace de noms Androidtheme
attribut sur votre barre d'outils, cela fonctionne.Il semble qu'un
dans mon thème et
dans styles.xml, changez le style des éléments de liste mais pas les éléments de menu.
la source
android:itemTextAppearance
attribut ne peut pas être placé dans un style dont le parent estparent="@android:style/Widget.Holo.ListPopupWindow"
car il ne sera pas rendu correctement. Il doit être dans un style de haut niveau comme celui dont le parent estandroid:Theme.Holo.Light.DarkActionBar
.Theme.Holo
ouTheme.Holo.Light.DarkActionBar
ou similaire.Vous pouvez changer la couleur du
MenuItem
facilement texte en utilisantSpannableString
au lieu deString
.la source
menu.findItem(R.id.menu_item_id);
au lieu demenu.getItem()
Si vous utilisez la nouvelle barre d'outils, avec le thème
Theme.AppCompat.Light.NoActionBar
, vous pouvez la styliser de la manière suivante.Selon les résultats que j'ai obtenus,
android:textColorPrimary
la couleur du texte affiche le nom de votre activité, qui est le texte principal de la barre d'outils.android:textColorSecondary
est la couleur du texte pour le sous-titre et le bouton plus d'options (3 points). (Oui, il a changé sa couleur en fonction de cette propriété!)android:textColor
Est la couleur de tous les autres textes, y compris le menu.Enfin, définissez le thème sur la barre d'outils
la source
android:actionMenuTextColor
(voir stackoverflow.com/a/5538709/423105 ).Si vous utilisez le menu comme,
<android.support.design.widget.NavigationView />
ajoutez simplement la ligne ci-dessous dansNavigationView
:Également disponible colorTint pour l'icône, il remplacera également la couleur de votre icône. Pour cela, vous devez ajouter la ligne ci-dessous:
Exemple:
J'espère que cela vous aidera.
la source
Je l'ai fait par programme comme ceci:
la source
comme vous pouvez le voir dans cette question, vous devriez:
Le code ci-dessus modifie la couleur du texte des éléments d'action de menu pour API> = v21.
Ci-dessus, le code de l'API <v21
la source
J'ai utilisé la balise html pour changer la couleur du texte d'un seul élément lorsque l'élément de menu est gonflé. J'espère que ce serait utile.
la source
Le moyen le plus simple de créer une couleur de menu personnalisée pour une seule barre d'outils, pas pour AppTheme
barre d'outils habituelle sur styles.xml
notre style de barre d'outils personnalisé
la source
dans Kotlin, j'ai écrit ces extensions:
et utilisé comme ceci:
la source
La reponse courte est oui. Quel chanceux êtes-vous!
Pour ce faire, vous devez remplacer certains styles des styles par défaut d'Android:
Tout d'abord, regardez la définition des thèmes sous Android:
Ainsi, l'apparence du texte dans le menu est dans
@android:style/TextAppearance.Widget.IconMenu.Item
Maintenant, dans la définition des styles :
Nous avons donc maintenant le nom de la couleur en question, si vous regardez dans le dossier des couleurs des ressources du système:
Enfin, voici ce que vous devez faire:
Remplacez "TextAppearance.Widget.IconMenu.Item" et créez votre propre style. Ensuite, liez-le à votre propre sélecteur pour le rendre comme vous le souhaitez. J'espère que cela vous aide. Bonne chance!
la source
Le menu d'options d'Android peut être personnalisé pour définir l'arrière-plan ou modifier l'apparence du texte. L'arrière-plan et la couleur du texte dans le menu ne pouvaient pas être modifiés à l'aide de thèmes et de styles. Le code source Android (data \ res \ layout \ icon_menu_item_layout.xml) utilise un élément personnalisé de la classe "com.android.internal.view.menu.IconMenuItem" View pour la disposition du menu. Nous pouvons apporter des modifications dans la classe ci-dessus pour personnaliser le menu. Pour obtenir la même chose, utilisez la classe d'usine LayoutInflater et définissez l'arrière-plan et la couleur du texte de la vue.
la source
03-23 19:45:25.134: E/AndroidRuntime(26761): java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Merci pour l'exemple de code. J'ai dû le modifier pour le faire fonctionner avec un menu contextuel. C'est ma solution.
Pour moi, cela fonctionne avec Android 1.6, 2.03 et 4.03.
la source
je l'ai trouvé Eureka !!
dans le thème de votre application:
voici votre thème de barre d'action:
et voici votre thème popup:
À votre santé ;)
la source
pour changer la couleur du texte des éléments de menu, utilisez le code ci-dessous
où
la source
Grâce à max.musterman, voici la solution que j'ai eue pour travailler au niveau 22:
Le codé en dur
Color.BLACK
pourrait devenir un paramètre supplémentaire de lasetMenuTextColor
méthode. De plus, je ne l'ai utilisé que pour les éléments de menu qui l'étaientandroid:showAsAction="never"
.la source
Vous pouvez définir la couleur par programmation.
la source
L'ajout de ceci dans mon styles.xml a fonctionné pour moi
la source
Ajoutez simplement ceci à votre thème
Testé sur l'API 21
la source
<style name="AppTheme.ItemTextStyle" parent="@android:style/TextAppearance.Widget">
, sinon le texte apparaît trop petit dans le menu de débordement. Notez également que cette technique ne fonctionne que sur Android 5 et supérieur.la source
Ma situation était la couleur du texte des paramètres dans le menu des options (le menu principal de l'application était affiché en appuyant sur le bouton du menu).
Testé dans l' API 16 avec la bibliothèque appcompat-v7-27.0.2 ,
AppCompatActivity
pourMainActivity
et leAppCompat
thème de l'application dans AndroidManifest.xml .styles.xml :
Je ne sais pas si cela
textColorSecondary
affecte d'autres éléments, mais cela contrôle la couleur du texte du menu.J'ai cherché des exemples sur le sujet, mais tous les extraits prêts à l'emploi n'ont pas fonctionné.
J'ai donc voulu l'étudier avec le code source de la bibliothèque appcompat-v7 (en particulier avec le res dossier du package .aar ).
Bien que dans mon cas, j'ai utilisé Eclipse avec des dépendances .aar éclatées . Je pourrais donc changer les styles par défaut et vérifier les résultats. Je ne sais pas comment exploser les bibliothèques à utiliser avec Gradle directement ou Android Studio . Cela mérite un autre fil d’enquête.
Donc mon but était de trouver quelle couleur dans le fichier res / values / values.xml est utilisée pour le texte du menu (j'étais presque sûr que la couleur était là).
#f00
valeur.secondary_text_default_material_light
élément de couleur.@color/abc_secondary_text_material_light
.Base.ThemeOverlay.AppCompat.Light
etPlatform.AppCompat.Light
.android:textColorSecondary
etandroid:textColorTertiary
dans leBase.ThemeOverlay.AppCompat.Light
.android:textColorSecondary
.Theme.AppCompat.Light
et non leThemeOverlay.AppCompat.Light
).Base.ThemeOverlay.AppCompat.Light
. Il a eu un enfantThemeOverlay.AppCompat.Light
.ThemeOverlay.AppCompat.Light
j'ai trouvé son utilisation dans leBase.Theme.AppCompat.Light.DarkActionBar
thème en tant queactionBarPopupTheme
valeur d'attribut.Theme.AppCompat.Light.DarkActionBar
était un enfant de celui trouvéBase.Theme.AppCompat.Light.DarkActionBar
afin que je puisse utiliser cet attribut dans mon styles.xml sans problème.ThemeOverlay.AppCompat.Light
et changé l'android:textColorSecondary
attribut.la source
La solution de Sephy ne fonctionne pas. Il est possible de remplacer l'apparence du texte de l'élément de menu d'options en utilisant la méthode décrite ci-dessus, mais pas l'élément ou le menu. Pour ce faire, il existe essentiellement 3 façons:
Voir Problème 4441: Thème du menu d'options personnalisées pour plus d'indices.
la source
essayez ce code ...
la source
java.lang.IllegalStateException: A factory has already been set on this LayoutInflater
Si vous souhaitez définir la couleur d'un élément de menu individuel, la personnalisation d'un thème de barre d'outils n'est pas la bonne solution. Pour ce faire, vous pouvez utiliser android: actionLayout et une vue d'action pour l'élément de menu.
Créez d'abord un fichier de mise en page XML pour la vue d'action. Dans cet exemple, nous utilisons un bouton comme vue d'action:
menu_button.xml
Dans l'extrait de code ci-dessus, nous utilisons
android:textColor="?android:attr/colorAccent"
pour personnaliser la couleur du texte du bouton.Ensuite, dans votre fichier de mise en page XML pour le menu, incluez
app:actionLayout="@layout/menu_button"
comme indiqué ci-dessous:main_menu.xml
Dernière substitution de la
onCreateOptionsMenu()
méthode dans votre activité:... ou fragment:
Pour plus de détails sur les vues d'action, consultez le guide du développeur Android .
la source
Voici comment colorer un élément de menu spécifique avec de la couleur, fonctionne pour tous les niveaux d'API:
En faisant cela, vous perdez l'effet de sélecteur d'arrière-plan, voici donc le code pour appliquer un sélecteur d'arrière-plan personnalisé à tous les enfants d'élément de menu.
Voici également la fonction d'assistance:
la source
Pour changer la couleur du texte, vous pouvez simplement définir une vue personnalisée pour le MenuItem, puis vous pouvez définir la couleur du texte.
Exemple de code: MenuItem.setActionView ()
la source