我试过setExpandTitleTextAppearance
了,但没有用。我想将扩展的标题文本居中。
7 回答
有一个属性expandedTitleGravity
可以与 CollapsingToolbarLayout 一起使用,以使展开的标题文本居中。将此添加到您的 CollapsingToolbarLayout:
app:expandedTitleGravity="bottom|center_horizontal"
在我的用例中,我设置app:titleEnabled
为 false,反正我不需要它。在那之后,我的重力在工具栏布局中得到了适当的尊重。
您可以通过以下方式在折叠和展开状态下安排标题的位置
展开状态下,
app:expandedTitleGravity="center"
处于崩溃状态,
app:collapsedTitleGravity="center"
我想这可能对你有帮助
@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>
然后你可以做这个技巧(我在 Activity 的 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!"
}
关键是Toolbar里面的TextView有width属性“Wrap Content”,所以我们需要把它改成“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>
正如 Nguyễn Hoàng Anh 上面所说,设置app:titleEnabled
为 false 就像一种魅力。
启用该选项后,在使用布局检查器进行一些挖掘后,可疑的未命名视图总是添加在TextView
内部的前面Toolbar
,就在“向上”按钮之后(如果已启用)。
因此,即使布局重力正常工作,一些可疑视图也会占用Toolbar
.
将其包含在折叠工具栏 xml 中以用于折叠:
app:collapsedTitleGravity="center_vertical|center_horizontal"
用于扩展
app:expandedTitleGravity="center_vertical|center_horizontal"