Comment changer la taille du texte de la barre d'outils?

92

Je souhaite modifier la taille du texte au format Toolbar. Parce que dans mon application, le Toolbartexte a des tailles différentes à la fois pour le mode paysage et portrait.

Est-il possible de modifier la taille du texte dans Toolbar?

Apurva
la source

Réponses:

283

Utilisez app:titleTextAppearance:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="?actionBarSize"
    android:id="@+id/toolbar"
    app:titleTextAppearance="@style/Toolbar.TitleText" />

et remplacez la taille du titre par défaut dans un style personnalisé:

<style name="Toolbar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">18sp</item>
</style>

Résultat:

Capture d'écran

Vukašin Manojlović
la source
Cela fonctionne, merci pour la solution! J'ai économisé beaucoup de temps!
hetsgandhi
23

par exemple ceci votre barre d'outils

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:gravity="center"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar" />

vous pouvez simplement ajouter cette vue ceci

    app:titleTextAppearance="@style/yourstyle"

style.xml

  <style name="yourstyle" parent="@style/Base.TextAppearance.AppCompat.Title">
    <item name="android:textSize">20sp</item>
</style>

comme ça...

massaimara98
la source
pour une raison quelconque, android:gravity="center"ne définit pas l'alignement centré pour moi ....: - /
Mobigital
5

Vous pouvez ajouter un TextViewà votre barre d'outils et personnaliser comme vous le souhaitez:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent">
    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:textSize="25sp"/>
</android.support.v7.widget.Toolbar>
Simas
la source
4
Cela semble être une réponse qui convient aux applications qui prennent en charge l'API <21. le titleTextAppearance est une solution intéressante mais ne fonctionne que l'API 21 et plus. Cependant, il y a quelques subtilités auxquelles nous devons faire face pour utiliser cette solution. Si vous utilisez SearchView, la version étendue de la vue ne s'étendra pas jusqu'à l'extrémité gauche. Au lieu de cela, il ne s'étendra que jusqu'au bord droit de la vue de texte de titre nouvellement ajoutée. Vous devrez donc y faire quelques personnalisations mais encore une fois c'est un cas particulier. Dans un sens général, c'est une bonne solution pour n'importe quelle version de plate-forme.
Deepak GM
3

Essayez ceci dans onCreate:

android.support.v7.app.ActionBar actionbar = getSupportActionBar();
TextView textview = new TextView(MainActivity.this);
RelativeLayout.LayoutParams layoutparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

textview.setLayoutParams(layoutparams);
textview.setText(getString(R.string.your_string));
textview.setTextColor(Color.WHITE);
textview.setTextSize(18);

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionbar.setCustomView(textview);

Ceci est tiré d' Android-Examples.com .

MorZa
la source
3

[Optional steps 1 & 2)

  1. Placez votre fichier de police dans le dossier «Projet / app / src / main / assets / fonts /».

Créez ensuite un objet Typeface à partir du fichier de police comme:

Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/font_name.ttf");
  1. Maintenant, récupérez l'élément enfant (vue du texte du titre de la barre d'outils) à partir de la barre d'outils existante, de la barre d'outils par défaut et passez l'objet de police que nous avons créé ci-dessus.
((TextView) toolbar.getChildAt(0)).setTypeface(typeFace); // set custom typeface - font
  1. Enfin, modifiez la taille du texte de la vue du texte du titre de la barre d'outils
((TextView) toolbar.getChildAt(0)).setTextSize(30); // set title font size
OMi Shah
la source
2
Bienvenue à SO! Veuillez ajouter une description pour soutenir votre réponse.
Mahib
1
cette réponse est venue dans les messages de faible qualité dans SO .... Pouvez-vous ajouter un commentaire à votre réponse? Expliquez votre logique et donnez un petit commentaire sur ce que votre code est censé faire. Cela aidera l'OP, mais cela servira également de commentaire pour les futurs utilisateurs
Ram Ghadiyaram
Si vous avez l'icône de navigation, vous devriez utiliser getChildAt (1) :)
Gabor le