27

我试过setExpandTitleTextAppearance了,但没有用。我想将扩展的标题文本居中。

4

7 回答 7

76

有一个属性expandedTitleGravity可以与 CollapsingToolbarLayout 一起使用,以使展开的标题文本居中。将此添加到您的 CollapsingToolbarLayout:

app:expandedTitleGravity="bottom|center_horizontal"
于 2015-09-19T17:36:08.243 回答
22

在我的用例中,我设置app:titleEnabled为 false,反正我不需要它。在那之后,我的重力在工具栏布局中得到了适当的尊重。

于 2016-02-29T07:28:46.163 回答
9

您可以通过以下方式在折叠和展开状态下安排标题的位置

展开状态下,

app:expandedTitleGravity="center" 

处于崩溃状态,

app:collapsedTitleGravity="center"

我想这可能对你有帮助

于 2019-04-16T09:43:14.983 回答
4

@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 上测试(应该几乎可以在任何地方工作)

于 2015-08-09T20:19:58.973 回答
1

如果您试图将标题置于折叠状态,您可以使用

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>
于 2017-11-07T11:34:41.427 回答
1

正如 Nguyễn Hoàng Anh 上面所说,设置app:titleEnabled为 false 就像一种魅力。

启用该选项后,在使用布局检查器进行一些挖掘后,可疑的未命名视图总是添加在TextView内部的前面Toolbar,就在“向上”按钮之后(如果已启用)。

因此,即使布局重力正常工作,一些可疑视图也会占用Toolbar.

于 2017-01-12T15:40:11.247 回答
0

将其包含在折叠工具栏 xml 中以用于折叠: app:collapsedTitleGravity="center_vertical|center_horizontal"

用于扩展 app:expandedTitleGravity="center_vertical|center_horizontal"

于 2019-06-26T07:37:04.840 回答