Pour utiliser un titre personnalisé dans Toolbar
tout ce que vous devez faire, n'oubliez pas que Toolbar
c'est juste un ViewGroup de fantaisie, vous pouvez donc ajouter un titre personnalisé comme ceci:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_top"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="@color/action_bar_bkgnd"
app:theme="@style/ToolBarTheme" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Toolbar Title"
android:layout_gravity="center"
android:id="@+id/toolbar_title" />
</android.support.v7.widget.Toolbar>
Cela signifie que vous pouvez le TextView
styler comme vous le souhaitez, car c'est juste un habitué TextView
. Ainsi, dans votre activité, vous pouvez accéder au titre comme suit:
Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar_top);
TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title);
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
( voir cette réponse ).Le titre de la barre d'outils est stylable. Toute personnalisation que vous faites doit être effectuée dans le thème. Je vais vous donner un exemple.
Disposition de la barre d'outils:
Modes:
la source
TextView
est un peu hacky, mais la réponse de réflexion est tout simplement mauvaise.C'est juste pour aider à joindre toutes les pièces en utilisant la réponse @ MrEngineer13 avec les commentaires @Jonik et @Rick Sanchez dans le bon ordre pour aider à atteindre le titre facilement centré !!
La mise en page avec
TextAppearance.AppCompat.Widget.ActionBar.Title
:La façon de réaliser avec le bon ordre:
N'oubliez pas s'il vous plaît de voter @ réponse MrEngineer13 !!!
Voici un exemple de projet ToolbarCenterTitleSample
J'espère aider quelqu'un d'autre;)
la source
Scrolling Activity
?nous n'avons pas d'accès direct au titre de la barre d'outils TextView, nous utilisons donc la réflexion pour y accéder.
la source
mTitleTextView
devientabcde12345
?Voici une approche dépendante du texte du titre pour rechercher une
TextView
instanceToolbar
.la source
Définissez la classe suivante:
... et ensuite utilisez-le au lieu de régulier
Toolbar
comme ceci:Vous avez toujours besoin de ces 2 lignes de code dans votre
Activity
(comme avec la normeToolbar
):C'est ça! Vous n'avez pas besoin de masquer le titre standard aligné à gauche, vous n'avez pas besoin de dupliquer le même code XML encore et encore, etc., utilisez simplement
CenteredToolbar
comme s'il était par défautToolbar
. Vous pouvez également définir votre police personnalisée par programme, car vous avez maintenant un accès direct àTextView
. J'espère que cela t'aides.la source
centeredTitleTextView.setTextColor(...)
devrait fonctionnerLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
?Personne ne l'a mentionné, mais il existe des attributs pour
Toolbar
:app:titleTextColor
pour définir la couleur du texte du titreapp:titleTextAppearance
pour définir l'apparence du texte du titreapp:titleMargin
pour fixer la margeEt il existe d'autres marges spécifiques telles que
marginStart
, etc.la source
<style name="customFontTextAppearanceStyle"> <item name="android:textSize">18sp</item> <item name="android:typeface">monospace</item>
et appliquez-le dans la barre d'outilsapp:titleTextAppearance="@styles/customFontTextAppearanceStyle"
app:titleTextAppearanc="style name"
sur leandroid.support.v7.widget.Toolbar
TAGJ'utilise cette solution:
la source
Sans la barre d'outils TextView, nous pouvons personnaliser la police en utilisant le code ci-dessous
la source
la source
Disposition:
Code:
la source
J'ai résolu cette solution, et voici les codes suivants:
Et vous pouvez changer le titre / l'étiquette, dans Activity, écrivez les codes ci-dessous:
TextView mTitle = (TextView) toolbarTop.findViewById (R.id.toolbar_title); mTitle.setText ("@ string / ....");
la source
Vous pouvez utiliser comme suit
la source
Un moyen très rapide et facile de définir une police personnalisée consiste à utiliser une police personnalisée
titleTextAppearance
avecfontFamily
:Ajoutez à styles.xml :
Dans votre dossier res , créez un dossier de polices (Ex: varela_round_regular.ttf )
Lisez le guide officiel pour en savoir plus https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
la source
Je ne sais pas si quelque chose a changé dans la bibliothèque appcompat mais c'est assez banal, pas besoin de réflexion.
la source
Solution que j'ai utilisée pour ce problème:
Pour la gravité centrale, je pense qu'il serait nécessaire de changer les paramètres de mise en page pour match_parent horizontalement, puis:
la source
Mise à jour de la réponse de @ MrEngineer13: pour aligner le centre du titre dans tous les cas, y compris l'icône Hamburger, les menus d'options, vous pouvez ajouter une
FrameLayout
barre d'outils dans comme ceci:la source
En XML, essayez ceci:
Dans du code:
la source
Même si l'ajout d'une vue de texte à la barre d'outils peut résoudre le problème de la restriction du style du titre, il y a un problème avec cela. Comme nous ne l'ajoutons pas à une mise en page, nous n'avons pas trop de contrôle sur sa largeur. Nous pouvons utiliser wrap_content ou match_parent.
Considérons maintenant un scénario dans lequel nous avons un SearchView sous forme de bouton sur le bord droit de la barre d'outils. Si le contenu du titre est plus, il ira en haut du bouton le masquant. Il n'y a aucun moyen de contrôler ce court de définir une largeur à l'étiquette et c'est quelque chose que vous ne voulez pas faire si vous voulez avoir un design réactif.
Voici donc une solution qui a fonctionné pour moi, qui est légèrement différente de l'ajout d'une vue de texte à la barre d'outils. Au lieu de cela, ajoutez la barre d'outils et la vue texte à une disposition relative et assurez-vous que la vue texte se trouve au-dessus de la barre d'outils. Ensuite, nous pouvons utiliser des marges appropriées et nous assurer que la vue texte s'affiche là où nous voulons qu'elle apparaisse.
Assurez-vous de définir la barre d'outils pour ne pas afficher le titre.
Voici le XML de cette solution:
Résout le problème @ ankur-chaudhary mentionné ci-dessus.
la source
Depuis
android.support.v7.appcompat 24.2
Toolbar
a méthodesetTitleTextAppearance
et vous pouvez définir sa police sans externetextview
.créer un nouveau style dans styles.xml
et l'utiliser
la source
J'ai passé plusieurs jours à chercher une solution universelle. Ma barre d'outils fonctionne avec le menu Android et l'icône de navigation.
Au début, vous devez créer une classe de barre d'outils personnalisée. Cette classe doit avoir calculé les positions centrées sur le titre (rembourrages):
Deuxièmement, vous devez créer une barre d'outils de mise en page:
C'est tout
la source
Essayez de prendre la barre d'outils et le titre dans une vue distincte. Prenez une vue à l'extrémité droite et donnez-leur un poids égal au poids de la barre d'outils. De cette façon, votre titre viendra au centre.
la source
Vous pouvez insérer ce code dans votre fichier xml
la source
la source
Le cadre a
android:gravity="center"
fonctionné pour moiPas de style rien. La barre d'outils est fondamentalement
ViewGroup
tout ce que vous devez faire est de définir la gravité des éléments qu'elle contient.la source
androidx.appcompat.widget.Toolbar
pour la police personnalisée dans la barre d'outils, vous pouvez remplacer la police textView dans le style, puis chaque textView dans votre application a également changé la police du titre de la barre d'outils je l'ai testée dans android studio 3.1.3
avec style:
puis dans votre thème, utilisez ceci:
la source
J'ai trouvé une autre façon d'ajouter une barre d'outils personnalisée sans aucun code Java / Kotlin supplémentaire.
Tout d'abord: créez un XML avec votre disposition de barre d'outils personnalisée avec AppBarLayout comme parent:
Deuxièmement: incluez la barre d'outils dans votre mise en page:
la source
Comme je le vois, vous avez deux options:
1) Modifiez le XML de la barre d'outils. Lorsque votre barre d'outils est ajoutée dans le XML, elle ressemble généralement à ceci:
si vous voulez le personnaliser, supprimez simplement le '/' à la fin et faites-le comme ça:
de cette façon, vous pouvez avoir une barre d'outils et personnaliser la vue de texte et le logo.
2) Modifiez par programme l'affichage et l'icône natifs du texte:
assurez-vous que votre barre d'outils n'est pas nulle avant d'y ajouter quoi que ce soit.
la source
Vous pouvez avoir une personnalisation
TextView
dans la barre d'outils comme ceci:Donc, cela va centrer le texte. Si vous souhaitez ajouter une police personnalisée à une police normale
Toolbar
, procédez comme suit<style>
:Et ajoutez-le à la barre d'outils:
Pour la vue de texte dans la barre d'outils, vous pouvez la définir avec l'
fontFamily
attribut:la source
J'étais confronté au même problème, résolu en faisant cela dans MainActivity
Et en morceaux
la source