Je suis d'accord que ce n'est pas complètement pris en charge, mais voici ce que j'ai fait. Vous pouvez utiliser une vue personnalisée pour votre barre d'action (elle s'affichera entre votre icône et vos éléments d'action). J'utilise une vue personnalisée et le titre natif est désactivé. Toutes mes activités héritent d'une seule activité, qui a ce code dans onCreate:
this.getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setDisplayShowTitleEnabled(false);
LayoutInflater inflator = LayoutInflater.from(this);
View v = inflator.inflate(R.layout.titleview, null);
//if you need to customize anything else about the text, do it here.
//I'm using a custom TextView with a custom font in my layout xml so all I need to do is set title
((TextView)v.findViewById(R.id.title)).setText(this.getTitle());
//assign the view to the actionbar
this.getActionBar().setCustomView(v);
Et mon layout xml (R.layout.titleview dans le code ci-dessus) ressemble à ceci:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent" >
<com.your.package.CustomTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:textSize="20dp"
android:maxLines="1"
android:ellipsize="end"
android:text="" />
</RelativeLayout>
Vous pouvez le faire en utilisant une
TypefaceSpan
classe personnalisée . C'est supérieur aucustomView
approche indiquée ci-dessus, car il ne se casse pas lors de l'utilisation d'autres éléments de la barre d'action, comme l'expansion des vues d'action.L'utilisation d'une telle classe ressemblerait à ceci:
La
TypefaceSpan
classe personnalisée reçoit votre contexte d'activité et le nom d'une police de caractères dans votreassets/fonts
répertoire. Il charge le fichier et met en cache une nouvelleTypeface
instance en mémoire. La mise en œuvre complète deTypefaceSpan
est étonnamment simple:Copiez simplement la classe ci-dessus dans votre projet et implémentez-la dans la
onCreate
méthode de votre activité, comme indiqué ci-dessus.la source
textAllCaps
attribut est défini sur true sur le TextView sous-jacent (par exemple via un thème), la police personnalisée n'apparaîtra pas. C'était un problème pour moi lorsque j'ai appliqué cette technique aux éléments de l'onglet de la barre d'actions.assets/fonts/
. Si vous venez de jeter les .ttf / fichiers .otf à l'actif et non dans un sous - dossier, vous devez modifier la ligne suivante de code en conséquence:String.format("fonts/%s", typefaceName)
. J'ai perdu 10 bonnes minutes en essayant de comprendre. Si vous ne le faites pas, vous obtiendrezjava.lang.RuntimeException: Unable to start activity ComponentInfo{com.your.pckage}: java.lang.RuntimeException: native typeface cannot be made
la source
À partir de la bibliothèque de support Android v26 + Android Studio 3.0 , ce processus est devenu facile comme un film !!
Suivez ces étapes pour modifier la police du titre de la barre d'outils:
res > font
selon les polices en XMLDans
res > values > styles
, collez ce qui suit ( utilisez votre imagination ici! )Insérez une nouvelle ligne dans les propriétés
app:titleTextAppearance="@style/TextAppearance.TabsFont"
de votre barre d'outils comme indiqué ci-dessousProfitez d'un style de police de titre Actionbar personnalisé !!
la source
La bibliothèque de calligraphie vous permet de définir une police personnalisée via le thème de l'application, qui s'appliquerait également à la barre d'action.
Tout ce qu'il faut pour activer la calligraphie est de l'attacher à votre contexte d'activité:
L'attribut personnalisé par défaut est
fontPath
, mais vous pouvez fournir votre propre attribut personnalisé pour le chemin en l'initialisant dans votre classe Application avecCalligraphyConfig.Builder
. L'utilisation deandroid:fontFamily
a été déconseillée.la source
C'est un vilain hack mais vous pouvez le faire comme ça (puisque action_bar_title est caché):
Ce code est destiné aux appareils post-GINGERBREAD, mais il peut facilement être étendu pour fonctionner avec la barre d'action Sherlock.
PS Sur la base du commentaire @pjv, il existe un meilleur moyen de trouver l'identifiant du titre de la barre d'action
la source
Le code suivant fonctionnera pour toutes les versions. J'ai vérifié cela dans un appareil avec du pain d'épice ainsi que sur un appareil JellyBean
la source
utilisez la nouvelle barre d'outils dans la bibliothèque de support, concevez votre barre d'action comme la vôtre ou utilisez le code ci-dessous
Gonfler Textview n'est pas une bonne option, essayez le générateur de chaînes pouvant être étendues
copier sous la classe
la source
la source
typeface.ITALIC
parTypeface.ITALIC
pour ne pas avoir d'avertissement de membre statiqueSi vous souhaitez définir la police de caractères pour tous les TextViews de l'activité entière, vous pouvez utiliser quelque chose comme ceci:
Et le TypefaceCache:
la source
Je viens de faire ce qui suit dans la fonction onCreate ():
J'utilise les bibliothèques de support, si vous ne les utilisez pas, je suppose que vous devriez passer à getActionBar () au lieu de getSupportActionBar ().
Dans Android Studio 3, vous pouvez ajouter des polices personnalisées en suivant ces instructions https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html , puis utiliser la police que vous venez d'ajouter dans " font_to_be_used "
la source
Pour ajouter à la réponse de @ Sam_D, j'ai dû le faire pour que cela fonctionne:
Cela semble exagéré - référencer v.findViewById (R.id.title)) deux fois - mais c'est la seule façon pour moi de le faire.
la source
Pour mettre à jour la bonne réponse.
tout d'abord: définissez le titre sur false, car nous utilisons une vue personnalisée
deuxièmement: créer titleview.xml
Enfin :
TÉLÉCHARGER LE FICHIER DE POLICE: parce que je stocke le fichier dans le cloudinaire, j'ai donc un lien dessus pour le télécharger.
la source
Aucune visualisation de texte personnalisée n'est requise!
Tout d'abord, désactivez le titre dans la barre d'outils de votre code java: getSupportActionBar (). SetDisplayShowTitleEnabled (false);
Ensuite, ajoutez simplement un TextView dans la barre d'outils:
la source
Essayez d'utiliser ceci
la source
Nous devons utiliser des réflexions pour y parvenir
la source
ESSAYE ÇA
la source