在CollapsingToolbarLayout中设置minHeight没有任何效果

8

我目前遇到的CollapsingToolbarLayout的主要问题是,无论我尝试什么,我的工具栏的minHeight属性都没有任何效果。

我的期望结果是: (CollapsingToolbarLayout具有特定的展开高度和特定的折叠高度(在本例中为180dp),而标题则会折叠或保持在顶部)

enter image description here

无论我怎么做,标题有时会居中,不完全折叠或 minHeight 仍被忽略。我已经尝试为 AppBarLayout、CollapsingToolbarLayout、工具栏本身、任何内容等设置 minHeight,也使用在网上找到的不同方法,但都没有成功。
这是基本的 XML:
<android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:minHeight="180dp">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            app:contentScrim="@android:color/transparent"
            app:expandedTitleGravity="bottom"
            app:expandedTitleTextAppearance="@style/TextAppearence.App.ToolbarTitle"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:statusBarScrim="@android:color/transparent">

            <com.xxxxxx.custom.Banner
                android:id="@+id/parallax_image"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:adjustViewBounds="true"
                android:fitsSystemWindows="true"
                android:scaleType="centerCrop"
                android:src="@drawable/xxxxxxxx"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.6"
                app:layout_scrollFlags="scroll" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:minHeight="180dp"
                app:layout_collapseMode="pin" />

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

我希望这些内容足以解释我的问题。 非常感谢您的帮助!

3个回答

18

这很简单。只需将您的工具栏的底部边距设置为您想要在折叠版本中保留的任何空间即可。

这背后的原理很简单。CollapsingToolbarLayout继承自FrameLayout,它将图像堆叠在彼此上面。当考虑折叠边界时,它仅考虑工具栏高度及其顶部/底部边距。


非常完美,感谢您花费额外的时间解释答案! - Alessio

1
你可以将高度设置为180dp,而不是使用minHeight,然后在工具栏中添加一个TextView作为标题。

1
通过添加自定义TextView作为标题,进行了一些调整后它可以工作了。但是无论如何我都无法让它与可扩展或折叠的工具栏一起工作... - TheWhiteLlama
1
“180dp” 是从哪里来的? - IgorGanapolsky

1

只需将工具栏的collapseMode设置为“pin”模式,并将高度设置为您需要的大小即可。

 <androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    app:layout_collapseMode="pin"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接