J'essaie d'utiliser le code suivant pour centrer le texte dans le ActionBar
, mais il s'aligne sur la gauche.
Comment le faites-vous apparaître au centre?
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle("Canteen Home");
actionBar.setHomeButtonEnabled(true);
actionBar.setIcon(R.drawable.back);
android
android-actionbar
android-theme
Sourabh Saldi
la source
la source
Réponses:
Pour avoir un titre centré en ABS (si vous voulez avoir ceci par défaut
ActionBar
, supprimez simplement le "support" dans les noms de méthode), vous pouvez simplement faire ceci:Dans votre activité, dans votre
onCreate()
méthode:abs_layout
:Maintenant, vous devriez avoir un
Actionbar
avec juste un titre. Si vous souhaitez définir un arrière-plan personnalisé, définissez-le dans la mise en page ci-dessus (mais n'oubliez pas de définirandroid:layout_height="match_parent"
).ou avec:
la source
android:layout_gravity="center"
au LinearLayout.((TextView)actionBar.getCustomView().findViewById(R.id.textView1)).setText("new title");
, où textView1 est votreTextView
ID dans votre CustomView.Je n'ai pas eu beaucoup de succès avec les autres réponses ... ci-dessous est exactement ce qui a fonctionné pour moi sur Android 4.4.3 en utilisant l'ActionBar dans la bibliothèque de support v7. Je l'ai configuré pour afficher l'icône du tiroir de navigation ("bouton de menu burger")
XML
Java
la source
params
objet ?? Ne pouvons-nous pas spécifier la gravité dans le fichier de mise en page externe que nous attribuons à ActionBar.Définissez votre propre vue personnalisée avec le texte du titre, puis transmettez LayoutParams à setCustomView (), comme le dit Sergii.
MODIFIÉ : au moins pour la largeur, vous devez utiliser WRAP_CONTENT ou votre tiroir de navigation, l'icône de l'application, etc. NE SERA PAS AFFICHÉ (vue personnalisée affichée au-dessus des autres vues sur la barre d'action). Cela se produira en particulier lorsqu'aucun bouton d'action n'est affiché.
EDITED : équivalent en mise en page xml:
Cela ne nécessite pas que LayoutParams soit spécifié.
la source
Juste un ajout rapide à la réponse d'Ahmad. Vous ne pouvez plus utiliser getSupportActionBar (). SetTitle lorsque vous utilisez une vue personnalisée avec un TextView. Donc, pour définir le titre lorsque vous avez plusieurs activités avec cette ActionBar personnalisée (en utilisant celui-ci xml), dans votre méthode onCreate () après avoir attribué une vue personnalisée:
la source
D'ACCORD. Après de nombreuses recherches, combinées à la réponse acceptée ci-dessus, j'ai trouvé une solution qui fonctionne également si vous avez d'autres éléments dans votre barre d'action (bouton retour / accueil, bouton de menu). Donc, fondamentalement, j'ai mis les méthodes de remplacement dans une activité de base (que toutes les autres activités étendent) et y ai placé le code. Ce code définit le titre de chaque activité tel qu'il est fourni dans AndroidManifest.xml, et effectue également d'autres tâches personnalisées (comme définir une teinte personnalisée sur les boutons de la barre d'action et une police personnalisée sur le titre). Il vous suffit d'omettre la gravité dans action_bar.xml et d'utiliser le remplissage à la place.
actionBar != null
check est utilisé, car toutes mes activités n'en ont pas.Testé sur 4.4.2 et 5.0.1
Et mon action_bar.xml est comme ça (si quelqu'un est intéressé):
EDIT : Si vous avez besoin de changer le titre en quelque chose d'autre APRÈS le chargement de l'activité (onCreateOptionsMenu a déjà été appelé), placez un autre TextView dans votre action_bar.xml et utilisez le code suivant pour "remplir" ce nouveau TextView, définir le texte et afficher il:
EDIT (25.08.2016) : Cela ne fonctionne pas avec la révision appcompat 24.2.0 (août 2016), si votre activité a un "bouton retour". J'ai déposé un rapport de bogue ( numéro 220899 ), mais je ne sais pas s'il est utile (je doute que cela soit corrigé de si tôt). Pendant ce temps, la solution est de vérifier si la classe de l'enfant est égale à AppCompatImageButton.class et de faire de même, d'augmenter seulement la largeur de 30% (par exemple appCompatImageButton.getWidth () * 1.3 avant de soustraire cette valeur du remplissage d'origine):
En attendant, j'ai ajouté des vérifications de remplissage / marge:
la source
sans customview, il est capable de centrer le titre de la barre d'action. il fonctionne parfaitement pour le tiroir de navigation également
Bon codage. Merci.
la source
Après de nombreuses recherches: cela fonctionne réellement:
Vous devez définir la mise en page custom_actionbar.xml qui correspond à vos besoins, par exemple:
la source
Cela fonctionne bien.
Sous la disposition de custom_actionbar:
la source
Vous devez définir
ActionBar.LayoutParams.WRAP_CONTENT
etActionBar.DISPLAY_HOME_AS_UP
la source
Le moyen le meilleur et le plus simple, spécialement pour ceux qui veulent juste une vue texte avec centre de gravité sans aucune mise en page XML.
la source
Code ici travaillant pour moi.
la source
Une solution réservée à Kotlin qui ne nécessite pas de modifications dans les mises en page XML:
la source
Voici une solution complète Kotlin + androidx, basée sur la réponse de @Stanislas Heili. J'espère que cela pourra être utile à d'autres. C'est pour le cas où vous avez une activité qui héberge plusieurs fragments, avec un seul fragment actif en même temps.
Dans votre activité:
Dans vos fragments:
la source
Les autres didacticiels que j'ai vus remplacent l'ensemble de la disposition de la barre d'action masquant les MenuItems. Je l'ai fait fonctionner simplement en suivant les étapes suivantes:
Créez un fichier xml comme suit:
Et en classe, faites-le:
la source
Pour les utilisateurs de Kotlin:
Utilisez le code suivant dans votre activité:
Et la mise en page XML / ressource:
la source
Ce code ne masquera pas le bouton de retour, en même temps alignera le titre au centre.
appeler cette méthode dans oncreate
la source