2017-02-26 18 views
1

Androidでアクティビティのアクションバーのタイトルをどのようにすることができますか?センターのアクションバーのタイトル

私は、この特定のトピックについては、SOに関する多くの質問を見てきました。そして、すべての答えは "カスタムビューを使用する"に戻り、独自のツールバーを持っています。

カスタムビューを作成せずに動作するソリューションが見つかりました。

答えて

2

はあなたのActivityでこのメソッドを持っています。その後、ちょうどあなたのonCreate()でそれを呼び出す

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); 
     } 
    } 
} 

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> 
関連する問題