2017-02-26 93 views
1

如何在Android中將活動的動作欄標題居中?中心動作欄標題

我已經在這個特定主題上看到了很多關於SO的問題。每個答案都回到「使用自定義視圖」並擁有自己的工具欄。

我發現了一個無需創建自定義視圖即可工作的解決方案。

回答

2

讓這個方法在你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); 
     } 
    } 
} 

然後,只是把它在你的onCreate()

centerTitle(); 

這就是它!

+0

爲什麼不使用XML? –

+0

因爲你必須自己執行菜單,樣式(顏色,主題)。通過這種方式,您的主要顏色和所有其他標準操作欄功能仍然存在 –

+0

我不確定您的意思,但使用AppBarLayout和居中的TextView,您仍然可以獲得所有您提到的東西 –

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