setExpandTitleTextAppearance
を試しましたが、うまくいきませんでした。展開されたタイトルテキストを中央に配置します。
CollapsingToolbarLayoutで使用できる属性expandedTitleGravity
があり、展開されたタイトルテキストを中央に配置します。これをCollapsingToolbarLayoutに追加します。
app:expandedTitleGravity="bottom|center_horizontal"
私のユースケースでは、app:titleEnabled
falseに、私はとにかくそれを必要としませんでした。その後、私の重力はツールバーレイアウト内で適切に尊重されました。
@Javed、私が間違っていたら修正してください。タイトルをツールバーの中央に配置したい場合、CollapsingToolbarLayoutは折りたたまれ、レイアウトはこのようなものになりますか?
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/collapsing_toolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp"
Android:fitsSystemWindows="true">
<ImageView
Android:id="@+id/image"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:scaleType="centerCrop"
Android:fitsSystemWindows="true"
app:layout_collapseMode="parallax"/>
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin" />
</Android.support.design.widget.CollapsingToolbarLayout>
次に、このトリックを実行できます(アクティビティのonCreateで実行します)。
try {
Field declaredField = toolbar.getClass().getDeclaredField("mTitleTextView");
declaredField.setAccessible(true);
TextView titleTextView = (TextView) declaredField.get(toolbar);
ViewGroup.LayoutParams layoutParams = titleTextView.getLayoutParams();
layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
titleTextView.setLayoutParams(layoutParams);
titleTextView.setGravity(Gravity.CENTER_HORIZONTAL);
} catch (Exception e) {
//"Error!"
}
重要なのは、ツールバー内のTextViewにはwidthプロパティ「コンテンツのラップ」があるため、「Match Parent」に変更する必要があるということです。 (このリフレクションの詳細を参照してください こちら )
テスト済みAndroid 5.1.1およびAndroid 4.3(どこでもほとんど動作するはずです)
タイトルを折りたたんだ状態に中央揃えしようとしている場合は、使用できます
Android:paddingEnd="70dp"
Android:paddingRight="70dp"
このような:
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/collapsing_toolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingEnd="70dp"
Android:paddingRight="70dp"
app:collapsedTitleGravity="center_horizontal"
app:expandedTitleGravity="start"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin">
</Android.support.v7.widget.Toolbar>
</Android.support.design.widget.CollapsingToolbarLayout>
次の方法で、折りたたまれた状態と展開された状態の両方でタイトルの位置を調整できます
展開状態で、
app:expandedTitleGravity="center"
折りたたまれた状態で、
app:collapsedTitleGravity="center"
これはあなたを助けるかもしれないと思う
NguyễnHoàngAnhが上で言ったように、app:titleEnabled
falseが魅力のように機能しました。
このオプションを有効にすると、レイアウトインスペクターでいくつか掘り下げた後、「Up」ボタンの直後のTextView
内のToolbar
の前に、疑わしい名前のないビューが常に追加されます(有効になっている場合) 。
したがって、レイアウトの重力が正しく機能していても、疑わしいビューがToolbar
内の余分なスペースをすべて引き継ぎます。
折りたたみ用のツールバーxmlの折りたたみにこれを含めます:app:collapsedTitleGravity="center_vertical|center_horizontal"
展開されたapp:expandedTitleGravity="center_vertical|center_horizontal"