422 Stimmen

Android-Symbolleiste Titel und benutzerdefinierter Schriftart zentrieren

Ich versuche herauszufinden, wie man eine benutzerdefinierte Schriftart für den Symbolleistentitel verwendet und diesen in der Symbolleiste zentriert (Kundenanforderung).

Im Moment verwende ich die gute alte ActionBar und setze den Titel auf einen leeren Wert. Dann verwende ich setCustomView, um meine benutzerdefinierte Schriftart in einem TextView zu platzieren und sie mit ActionBar.LayoutParams zu zentrieren.

Gibt es einen besseren Weg, das zu tun? Verwendung der neuen Toolbar als meine ActionBar.

795voto

MrEngineer13 Punkte 38472

Um einen benutzerdefinierten Titel in Ihrer Toolbar zu verwenden, müssen Sie lediglich daran denken, dass die Toolbar nur eine schicke ViewGroup ist, sodass Sie einen benutzerdefinierten Titel hinzufügen können, wie folgt:

Dies bedeutet, dass Sie den TextView nach Belieben gestalten können, da es sich nur um ein reguläres TextView handelt. So können Sie in Ihrer Aktivität auf den Titel wie folgt zugreifen:

Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar_top);
TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title);

86voto

Gueorgui Obregon Punkte 4967

Dies soll nur dazu dienen, alle Teile mit der Antwort von @MrEngineer13 und den Kommentaren von @Jonik und @Rick Sanchez in der richtigen Reihenfolge zusammenzuführen, um die Titelzentrierung leicht zu erreichen!!

Das Layout mit TextAppearance.AppCompat.Widget.ActionBar.Title :

Der Weg, um die richtige Reihenfolge zu erreichen:

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    TextView mTitle = (TextView) toolbar.findViewById(R.id.toolbar_title);

    setSupportActionBar(toolbar);
    mTitle.setText(toolbar.getTitle());

    getSupportActionBar().setDisplayShowTitleEnabled(false);

Bitte vergessen Sie nicht, die Antwort von @MrEngineer13 zu upvoten!!!

Hier ist ein Beispielprojekt ToolbarCenterTitleSample

Beschreibung des Bildes hier eingeben

Hoffe, jemand anderem damit zu helfen ;)

72voto

Binoy Babu Punkte 16263

Der Titel der Symbolleiste ist anpassbar. Jede Anpassung, die Sie vornehmen, muss im Theme vorgenommen werden. Ich gebe Ihnen ein Beispiel.

Toolbar-Layout:

Styles:

<style name="ToolBarStyle.Base" parent="">
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="theme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>

    <item name="titleTextAppearance">@style/TextAppearance.Widget.Event.Toolbar.Title</item>

    <!--Hier können beliebige Textformatierungen vorgenommen werden-->
    <item name="android:textStyle">normal</item>
    <item name="android:textSize">@dimen/event_title_text_size</item>

54voto

BugsBunnyBR Punkte 1004

Wir haben keinen direkten Zugriff auf das ToolBar-Titel-TextView, daher verwenden wir Reflexion, um darauf zuzugreifen.

  private TextView getActionBarTextView() {
    TextView titleTextView = null;

    try {
        Field f = mToolBar.getClass().getDeclaredField("mTitleTextView");
        f.setAccessible(true);
        titleTextView = (TextView) f.get(mToolBar);
    } catch (NoSuchFieldException e) {
    } catch (IllegalAccessException e) {
    }
    return titleTextView;
}

36voto

user3210008 Punkte 776

MaterialToolbar von Material Components 1.4.0-alpha02 verfügt jetzt über die Möglichkeit, den Titel der Toolbar zu zentrieren, indem das Attribut titleCentered auf true gesetzt wird:

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X