我试过setExpandTitleTextAppearance
,但它没有用。我想将扩展的标题文本居中。
有一个属性expandedTitleGravity
,您可以使用CollapsingToolbarLayout来扩展标题文本的中心。将其添加到您的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具有宽度属性“Wrap Content”,因此我们需要将其更改为“Match Parent”。 (查看有关此反射的更多信息here)
在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ễnHoàngAnh所说,将app:titleEnabled
设为假就像魅力一样。
启用该选项后,在使用布局检查器进行一些挖掘之后,总是在TextView
内部的Toolbar
前面添加可疑的未命名视图,就在“向上”按钮之后(如果已启用)。
因此,即使布局重力正常工作,一些可疑视图也会占据Toolbar
内部的所有额外空间。
您可以通过以下方式在折叠和展开状态下排列标题的位置
处于扩张状态
app:expandedTitleGravity="center"
处于崩溃状态,
app:collapsedTitleGravity="center"
我想这可能会对你有所帮助
将此包含在折叠工具栏xml中,用于折叠:app:collapsedTitleGravity="center_vertical|center_horizontal"
扩大app:expandedTitleGravity="center_vertical|center_horizontal"