Android barre d'outils du centre de titre et de police personnalisée
Je suis à essayer de comprendre la bonne façon de l'utiliser une police personnalisée pour la barre de titre, et le centrer dans la barre d'outils (l'exigence de client).
En ce moment, je suis en utilisant le bon vieux ActionBar, et j'étais définir le titre de la valeur est vide, et à l'aide de setCustomView
de mettre ma police personnalisée TextView et le centre à l'aide de ActionBar.LayoutParams.
Est-il une meilleure façon de le faire? À l'aide de la Barre d'outils nouveaux comme mon ActionBar.
InformationsquelleAutor Mathbl | 2014-10-23
Vous devez vous connecter pour publier un commentaire.
D'utiliser un titre personnalisé dans votre
Toolbar
tout ce que vous devez faire est de vous souvenir est queToolbar
est juste une fantaisie de ViewGroup de sorte que vous pouvez ajouter un titre personnalisé comme suit:Cela signifie que vous pouvez le style de la
TextView
toutefois vous voulez parce que c'est juste unTextView
. Donc, dans votre activité, vous pouvez accéder le titre comme suit:style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
(voir cette réponse).android:label
dans le AndroidManifest déclaration.scrolling activity
lorsque vous faites défiler la coutumeTextview
cacher, et le titre original est indiqué! vous pouvez le tester ! est réponse est très déroutant .TextView
dans unFrameLayout
enveloppez-la dans la barre d'outilsandroidx.appcompat.widget.Toolbar
pour être en mesure de mettre un Textview à l'intérieur de la barre d'outilsLa Barre de titre est à styliser. Toute personnalisation que vous faites doit être fait dans le thème. Je vais vous donner un exemple.
De la barre d'outils de mise en page:
Styles:
TextView
est très orthodoxe, mais la réflexion réponse est tout simplement mal.<item name="android:fontFamily">@font/your_font_here</item>
C'est juste pour l'aider à se joindre toutes les pièces à l'aide de @MrEngineer13 répondre avec @Jonik et @Rick Sanchez commentaires avec le bon ordre pour aider à obtenir le titre centré facile!!
La mise en page avec
TextAppearance.AppCompat.Widget.ActionBar.Title
:Le moyen de l'atteindre avec le bon ordre:
S'il vous plaît n'oubliez pas de upvote @MrEngineer13 répondre !!!
Ici est un exemple de projet ToolbarCenterTitleSample
L'espoir d'aider quelqu'un d'autre 😉
Scrolling Activity
?nous n'avons pas un accès direct à la Barre de titre TextView nous avons donc utiliser la réflexion pour y accéder.
Toolbar
objet (mToolbar
ici)?mTitleTextView
devientabcde12345
?Ici est le texte du titre de la personne à charge pour trouver
TextView
instance deToolbar
.Définir la classe suivante:
...et puis il suffit de l'utiliser au lieu d'un
Toolbar
comme ceci:Vous avez encore besoin de ces 2 lignes de code dans votre
Activity
(comme avec la normeToolbar
):Que c'est! Vous n'avez pas besoin de cacher la norme aligné à gauche du titre, n'ont pas besoin de dupliquer le même XML code, etc., utilisez simplement
CenteredToolbar
comme si c'était par défautToolbar
. Vous pouvez également définir vos polices personnalisées par programmation puisque vous avez maintenant un accès direct à laTextView
. Espérons que cette aide.centeredTitleTextView.setTextColor(...)
devrait fonctionnerLayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
?Personne n'a parlé, mais il y a certains attributs
Toolbar
:app:titleTextColor
pour définir le titre la couleur du texteapp:titleTextAppearance
pour définir le titre de l'apparence du texteapp:titleMargin
pour le réglage de la margeEt il existe d'autres du côté des marges comme
marginStart
, etc.<style name="customFontTextAppearanceStyle"> <item name="android:textSize">18sp</item> <item name="android:typeface">monospace</item>
et les appliquer dans la barre d'outilsapp:titleTextAppearance="@styles/customFontTextAppearanceStyle"
app:titleTextAppearanc="style name"
sur leandroid.support.v7.widget.Toolbar
TAGJ'utilise cette solution:
Sans barre d'outils TextView nous pouvons personnaliser la police à l'aide de code ci-dessous
Mise en page:
Code:
Vous pouvez utiliser comme suit
Un très rapide et facile façon à définir une police personnalisée est d'utiliser un
titleTextAppearance
avec unfontFamily
:Ajouter à styles.xml:
Dans votre res dossier, créez un police dossier (Ex: varela_round_regular.ttf)
Lire le guide officiel pour en savoir plus https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html
Je ne sais pas si quelque chose a changé dans le appcompat bibliothèque, mais il est assez trivial, pas besoin de réflexion.
Solution que j'ai utilisé pour ce problème:
Pour centre de gravité, je pense qu'il serait nécessaire de changer de mise en page params à match_parent horizontalement et ensuite:
J'ai résolu cette solution , Et c'est un des codes suivants:
Et vous pouvez changer le titre/l'étiquette , de l'Activité, écrire ci-dessous les codes:
TextView mTitle = (TextView) toolbarTop.findViewById(R. id.toolbar_title);
mTitle.setText("@string/....");
Mise à jour de @MrEngineer13 réponse: pour aligner le titre de centre dans tous les cas, y compris Hamburger icône, menu, vous pouvez ajouter un
FrameLayout
dans la barre d'outils comme ceci:Depuis
android.support.v7.appcompat 24.2
Toolbar
a la méthodesetTitleTextAppearance
et vous pouvez définir la police à l'extérieurtextview
.créer un nouveau style dans styles.xml
et de l'utiliser
J'ai passé plusieurs jours à chercher une solution universelle. Ma barre d'outils de travail avec android menu et de la valeur liquidative de l'icône.
Au premier abord, vous avez besoin de personnaliser la barre d'outils de la classe. Cette classe doit avoir calculer titre centré positions (les rembourrages):
Deuxièmement, vous avez besoin de créer la mise en page de la barre d'outils:
C'est tout
Essayez de prendre la Barre d'outils et le iota dans une fenêtre distincte. Prendre une vue à droite sur la fin, et compte tenu de leur poids égal au poids de la barre d'outils. De cette façon, votre titre va venir dans le centre.
Même si l'ajout d'un affichage de texte de la barre d'outils peut résoudre le problème de la restriction de propriété style, il y a un problème avec elle. Comme nous ne sommes pas à l'ajouter à une mise en page, nous n'avons pas trop de contrôle sur sa largeur. On peut soit utiliser wrap_content ou match_parent.
Maintenant envisager un scénario où nous avons une searchView comme un bouton sur le bord droit de la barre d'outils. Si le contenu du titre sont plus, il va monter sur le sommet du bouton qui l'obscurcissent. Il n'y a aucun moyen de contrôle sur ce court de réglage de la largeur de l'étiquette et c'est quelque chose que vous ne voulez pas le faire si vous voulez avoir une conception réactive.
Donc, voici une solution qui a fonctionné pour moi qui est légèrement différent de l'ajout d'un textview de la barre d'outils. Au lieu de cela, ajouter la barre d'outils de texte et de vue d'un parent de mise en page et de s'assurer que l'affichage de texte en haut de la barre d'outils. Ensuite, nous pouvons utiliser les marges appropriées et assurez-vous que l'affichage de texte montre jusqu'où nous voulons qu'il se montre.
Assurez-vous de configurer la barre d'outils pour ne pas afficher le titre.
Voici le XML pour cette solution:
Résout le problème de @maumau-chaudhary mentionnés ci-dessus.
Réglage
android:gravity="center"
a fonctionné pour moiPas de style de rien. Barre d'outils est en fait un
ViewGroup
tout ce que vous devez faire est de définir la gravité des éléments.androidx.appcompat.widget.Toolbar
pour les polices personnalisées dans la barre d'outils, vous pouvez remplacer textView de police dans le style, et puis toutes les textView dans votre application barre d'outils de la police du titre a changé automatiquement
je l'ai testé en android studio 3.1.3
dans le style de le faire:
et puis dans votre thème utilise ceci:
J'ai trouvé une autre façon d'ajouter de la barre d'outils personnalisée, sans adicional Java/Kotlin code.
Première: créer un document XML avec votre barre d'outils personnalisée mise en page avec AppBarLayout en tant que parent:
Deuxième: Inclure la barre d'outils à votre disposition:
Comme je le vois, vous avez deux options:
1) Modifier la barre d'outils XML. Lorsque votre Barre d'outils est ajoutée dans le fichier XML, il ressemble généralement que:
si vous souhaitez personnaliser, il suffit de retirer la '/' à la fin et de faire comme cela:
de cette façon, vous pouvez avoir une barre d'outils et de personnaliser le textview et le logo.
2) Programrticly changer le natif textview et l'icône:
assurez-vous que votre barre d'outils n'est pas null avant de mettre quoi que ce soit.
Vous pouvez avoir un personnalisé
TextView
dans la barre d'outils comme ceci:Ainsi, cela permettra de centrer le texte. Si vous souhaitez ajouter des polices personnalisées pour une normale
Toolbar
, faire un<style>
:Et l'ajouter à la barre d'outils:
Pour le textview dans la barre d'outils, vous pouvez définir avec le
fontFamily
attribut:En XML essayez ceci :
Dans Le Code:
J'ai été confrontée au même problème, fixe en faisant cela, en MainActivity
Et Du Fragment
D'utiliser un titre personnalisé dans votre Barre d'outils, vous pouvez ajouter un titre personnalisé comme :
Vous pouvez insérez ce code dans votre fichier xml
Essayer
Vous avez juste à ajouter la ligne ci-dessous dans votre barre d'outils mise en page:
Autre Tutoriel: