2017-02-26 8 views
1

Wie kann ich den Titel der Aktivitätsleiste in Android zentrieren?Titel der Center Action-Leiste

Ich habe viele Fragen zu SO für dieses spezielle Thema gesehen. Und jede Antwort kommt zurück auf "Benutzerdefinierte Ansicht verwenden" und eine eigene Symbolleiste zu haben.

Ich habe eine Lösung gefunden, die funktioniert, ohne eine benutzerdefinierte Ansicht zu erstellen.

Antwort

2

haben diese Methode in Ihrem Activity:

private void centerTitle() { 
    ArrayList<View> textViews = new ArrayList<>(); 

    getWindow().getDecorView().findViewsWithText(textViews, getTitle(), View.FIND_VIEWS_WITH_TEXT); 

    if(textViews.size() > 0) { 
     AppCompatTextView appCompatTextView = null; 
     if(textViews.size() == 1) { 
      appCompatTextView = (AppCompatTextView) textViews.get(0); 
     } else { 
      for(View v : textViews) { 
       if(v.getParent() instanceof Toolbar) { 
        appCompatTextView = (AppCompatTextView) v; 
        break; 
       } 
      } 
     } 

     if(appCompatTextView != null) { 
      ViewGroup.LayoutParams params = appCompatTextView.getLayoutParams(); 
      params.width = ViewGroup.LayoutParams.MATCH_PARENT; 
      appCompatTextView.setLayoutParams(params); 
      appCompatTextView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER); 
     } 
    } 
} 

Dann ist es nur in Ihrem onCreate() nennen:

centerTitle(); 

Das ist es !!!

+0

Warum nicht XML verwenden? –

+0

Da müssen Sie Ihre eigene Implementierung von Menü, Stil (Farbe, Thema) tun. Auf diese Weise sind Ihre primäre Farbe und alle anderen Standard-Action-Bar-Funktionen immer noch da –

+0

Ich bin mir nicht sicher, was Sie meinen, aber mit AppBarLayout und einem zentrierten TextView, erhalten Sie immer noch die Dinge, die Sie erwähnten –

-1
<android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" > 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:gravity="center" 
       android:text="haiii"/> 
</android.support.v7.widget.Toolbar>