Freitag, April 10, 2020

So ändern Sie die ActionBar-Titel-schriftart, wenn Sie mit AppCompat

Ich möchte ein benutzerdefinierte schriftart für den Titel meiner app, die angezeigt wird, auf der ActionBar. Bisher habe ich jede Bibliothek unterstützt und diese Lösung:

int titleId = getResources().getIdentifier("action_bar_title", "id",
                "android");
TextView yourTextView = (TextView) findViewById(titleId);
yourTextView.setTypeface(face);

funktionierte gut für mich. Aber jetzt bin ich mit material design SupportActionBar und dies wirft NullPointerException. So so ändern Sie die ActionBar, die Schrift bei der Verwendung von AppCompat?

  • Diese Antwort denke ich kann Ihnen helfen, stackoverflow.com/a/15181195/2778639
  • Danke, dieser post behoben, mein problem. Wenn jemand ähnliches problem zu mir, die benutzen Sie einfach die Methode aus dem verlinkten post, die gut funktioniert mit dem support-Bibliothek-v – -21.
  • Hier die Lösungen [Actionbar-custom-design.][1] [1]: stackoverflow.com/questions/17966350/…
InformationsquelleAutor fragon | 2015-01-03

3 Kommentare

  1. 6

    Vorausgesetzt, Sie sind bereits erfolgreich mithilfe der neuen Symbolleiste des AppCompat v22+
    und das Sie importieren android.Unterstützung.v7.- widget.Symbolleiste in Ihrer Aktivität.

    Also auf Ihrer OnCreate sollten Sie bereits

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    in diesem Punkt sind Sie fast fertig:

    import java.lang.reflektieren.Feld;

    und fügen Sie folgenden Zeilen:

    TextView yourTextView = null;
    try {
        Field f = toolbar.getClass().getDeclaredField("mTitleTextView");
        f.setAccessible(true);
        yourTextView = (TextView) f.get(toolbar);
        yourTextView.setTypeface(face);
    } catch (NoSuchFieldException e) {
    } catch (IllegalAccessException e) {
    }
    • Arbeitete für mich. Dank
  2. 2

    Verwenden Symbolleiste statt der ActionBar.befolgen Sie folgende Schritte zum hinzufügen der Symbolleiste:
    1.ändern Sie Ihre app-Designs zu Theme.AppCompat.Light.NoActionBar
    2.Goto Projekt-Struktur aus dem Menü Datei,gehen Sie zum Bibliothek-Abhängigkeiten hinzufügen design-Bibliothek und synchronisieren Sie Ihr Projekt.
    3.Gehe zum layout, wo Sie wollen, um die ActionBar und schreiben folgenden code:

    <android.support.v7.widget.Toolbar
        android:id="@+id/mytoolbar"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:background="@color/pccolor"
        android:title="Services"
        app:titleTextAppearance="@style/Toolbar.TitleText"
        android:elevation="4dp">
      <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Toolbar Title"
        android:layout_gravity="center"
        android:id="@+id/toolbar_title" />
    </android.support.v7.widget.Toolbar>

    4.In der Aktivität,schreiben Sie wie folgt:

     Toolbar mytoolbar=(Toolbar)findViewById(R.id.mytoolbar);
        setSupportActionBar(mytoolbar);

    Anpassen, um Ihre Titel-schriftart:

    fontPath = "Fonts/Roboto-Light.ttf";
        Typeface tf = Typeface.createFromAsset(getActivity().getAssets(), fontPath);
    
    TextView tv_ins=(TextView)FindViewById(R.id.toolbar_title);
     tv_ins.setText("mytitle");
    tv_ins.setTypeface(tf);

    Ausprobieren Hofft, dass dies hilft Ihnen,wenn etwas falsch ist bitte lassen Sie mich wissen.

  3. -2

    vorbereiten von Benutzerdefinierten Layout -, text-Ansicht in action_bar_layout und rufen Sie dann
    actionbar.setcustomlayout()

Kostenlose Online-Tests