Wie ändere ich die Textgröße der Symbolleiste?


92

Ich möchte die Größe des Textes in ändern Toolbar. Weil in meiner Anwendung ToolbarText sowohl im Quer- als auch im Hochformat unterschiedliche Größen hat.

Ist es möglich, die Textgröße von Text zu ändern Toolbar?

Antworten:


282

Verwendung 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" />

und überschreiben Sie die Standardtitelgröße in einem benutzerdefinierten Stil:

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

Ergebnis:

Bildschirmfoto


Es funktioniert, danke für die Lösung! Hat viel Zeit gespart!
Hetsgandhi

23

Zum Beispiel Ihre Symbolleiste

<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" />

Sie können diese Ansicht einfach hinzufügen

    app:titleTextAppearance="@style/yourstyle"

style.xml

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

so wie das...


aus irgendeinem Grund android:gravity="center"stellt die zentrierte Ausrichtung für mich nicht ein ....: - /
Mobigital

5

Sie können TextViewIhrer Symbolleiste ein hinzufügen und nach Ihren Wünschen anpassen:

<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>

4
Dies scheint eine Antwort zu sein, die für Apps geeignet ist, die API <21 unterstützen. TitleTextAppearance ist eine gute Lösung, funktioniert jedoch nur mit API 21 und höher. Es gibt jedoch einige Feinheiten, mit denen wir uns bei dieser Lösung befassen müssen. Wenn Sie SearchView verwenden, wird die erweiterte Version der Ansicht erst am linken Ende angezeigt. Stattdessen wird es nur bis zum rechten Rand der neu hinzugefügten Titeltextansicht gedehnt. Sie müssen dort also einige Anpassungen vornehmen, aber auch dies ist ein spezieller Fall. Im Allgemeinen ist dies eine gute Lösung für jede Plattformversion.
Deepak GM

3

Versuchen Sie dies in 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);

Dies ist von Android-Examples.com übernommen .


3

[Optional steps 1 & 2)

  1. Platzieren Sie Ihre Schriftartdatei im Ordner "Project / app / src / main / assets / fonts /".

Erstellen Sie dann ein Schriftobjekt aus der Schriftartdatei wie folgt:

Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/font_name.ttf");
  1. Rufen Sie nun das untergeordnete Element (Textansicht des Symbolleistentitels) aus der vorhandenen Symbolleiste, der Standardsymbolleiste, ab und übergeben Sie das oben erstellte Schriftobjekt.
((TextView) toolbar.getChildAt(0)).setTypeface(typeFace); // set custom typeface - font
  1. Ändern Sie abschließend die Textgröße der Titeltextansicht der Symbolleiste
((TextView) toolbar.getChildAt(0)).setTextSize(30); // set title font size

2
Willkommen bei SO! Bitte fügen Sie eine Beschreibung hinzu, um Ihre Antwort zu unterstützen.
Mahib

1
Diese Antwort kam in Beiträgen von geringer Qualität in SO .... Können Sie Ihrer Antwort einen Kommentar hinzufügen? Erläutern Sie Ihre Logik und geben Sie einen kleinen Kommentar dazu ab, was Ihr Code tun soll. Dies wird dem OP helfen, aber es wird auch als Kommentar für zukünftige Benutzer dienen
Ram Ghadiyaram

Wenn Sie ein Navigationssymbol haben, sollten Sie getChildAt (1) verwenden :)
Gabor
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.