当前位置: 首页 > 知识库问答 >
问题:

(设计支持库)CollapsingToolbarLayout--折叠时工具栏未固定

易元青
2023-03-14

我在将设计支持库集成到我的应用程序中时遇到问题。出于某种原因,工具栏会随着 CollapsingToolbarLayout 而折叠,并且不会像 Chris Banes 的 Cheesesquare 示例中那样将其固定。https://github.com/chrisbanes/cheesesquare

我没有对我的布局做任何改变。事实上,我用他的风格取代了我的风格,并放弃了他的布局。我想知道是否使用工具栏,而不是android.support.v7.widget。工具栏正在导致此问题。

问题就在这里。

这是我的应用栏部分的 XML。

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">


    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="@dimen/detail_backdrop_height"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:fitsSystemWindows="true">

        <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"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleMarginEnd="64dp">

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                app:layout_collapseMode="parallax" />

            <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>

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

    ...

</android.support.design.widget.CoordinatorLayout>

共有3个答案

严狐若
2023-03-14

>

  • 使用app:layout_collapseMode="pin"确保工具栏本身在视图折叠时保持固定在屏幕顶部。
  • 更好的是,当您同时使用GrouapynToolbarLayout和Toolbar时,当布局完全可见时,标题会自动显示得更大,然后在折叠时转换为其默认大小。
  • 请注意,在这些情况下,您应该在GrouapynToolbarLayout调用settitle(),而不是在工具栏本身。

    有关实现的更多详细信息,请访问 Android 开发人员
    博客或有关包的详细信息 折叠工具栏布局

  • 督辉
    2023-03-14
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context=".UserDetail" >
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/app_bar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >
    
            <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"
                android:fitsSystemWindows="true"
                app:contentScrim="?attr/colorPrimary"
                app:expandedTitleMarginEnd="64dp"
                app:expandedTitleMarginStart="48dp" >
    
                <ImageView
                    android:id="@+id/imageView_list"
                    android:layout_width="match_parent"
                    android:layout_height="275dp"
                    app:layout_collapseMode="parallax"
                    android:fitsSystemWindows="true"
                    android:scaleType="fitXY"
                    android:src="@drawable/default_profile" />
    
                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="pin"               
                    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    
    
            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v4.widget.NestedScrollView
            android:id="@+id/scroll"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:clipToPadding="false" >
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
    
    
    
                <TableLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:layout_margin="15dp"
                    android:shrinkColumns="1"
                    android:stretchColumns="*" >
    
                    <TableRow
                        android:id="@+id/tableRow1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="5dp" >
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/CurrentAddress"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Current Address:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_CurrentAddress"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:inputType="textMultiLine"
                            android:text="Current Address"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/PermanentAddress"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Permanent Address:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_PermanentAddress"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:inputType="textMultiLine"
                            android:text="Permanent Address"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/Email"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Email:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_Email"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Email Address"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow5"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/PhoneNumber"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Phone Number:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_PhoneNumber"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Phone Number"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow6"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/BirthDate"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Date of Birth:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_BirthDate"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="BirthDate"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow7"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/Gender"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Gender:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_Gender"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Gender"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow8"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/Education"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Education:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_Education"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Education"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow9"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/Qualification"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Qualification:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_Qualification"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="Qualification"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow10"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/BloodGroup"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="BloodGroup:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_BloodGroup"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="BloodGroup"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
    
                    <TableRow
                        android:id="@+id/tableRow11"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="10dp" >
    
                        <TextView
                            android:id="@+id/MaritalStatus"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="MaritalStatus:"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="bold" />
    
                        <TextView
                            android:id="@+id/txt_MaritalStatus"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="MaritalStatus"
                            android:textColor="#000000"
                            android:textSize="15sp"
                            android:textStyle="normal" />
                    </TableRow>
                </TableLayout>
    
              <!--   <Button
                    android:id="@+id/addContact"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Add To Contact"
                    android:textStyle="bold"
                    android:visibility="invisible" /> -->
            </LinearLayout>
        </android.support.v4.widget.NestedScrollView>
    
       <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_margin="16dp"
            app:layout_anchor="@id/app_bar_layout"
            app:layout_anchorGravity="bottom|right|end"
            android:clickable="true"
            android:src="@drawable/addtocontact"
            style="@style/FabStyle"
            />
    
    </android.support.design.widget.CoordinatorLayout>
    
    邹书
    2023-03-14

    您的直觉是正确的:Grouap枪击工具栏布局确实依赖于您使用支持工具栏-它使用它来设置的最小高度。您应该切换到使用Toolbar的支持版本,以确保使用的最佳体验。

     类似资料:
    • 有什么方法可以让Android设计支持库的折叠动画在滚动时更流畅?当我释放滚动时,它突然停止。但我想要的是:即使停止滚动,塌陷动画也会顺利继续。Android-ObservableScrollView和Scrollable是正在平滑崩溃的库。

    • 我试图实现一个与Cheesesquare演示应用程序中类似的CollapsingToolBarLayout。 但是,我需要在进入活动时默认折叠工具栏(这样在手机上的横向模式下就不会占用太多空间)。 根据文档,使用标志似乎很容易实现。 但是,我没有获得所需的行为。相反,AppBarLayout一开始显示完全扩展,然后滚动出屏幕,只留下系统栏。 下面是我的布局(对芝士蛋糕的轻微修改):

    • 我正在尝试在我的android应用程序中实现折叠工具栏。我可以按我希望的方式显示工具栏,但滚动时它不会塌陷。 我正在使用以下代码 activity.xml main_toolbar.xml 下面是屏幕的外观

    • 自从Android支持库从版本25.4.0更新到26.0.0(高达27.0.0)以来,我在活动中的折叠工具栏中遇到了一些奇怪的行为。 查看这些gif上的差异: 25.4.0 26.0.0 ( ) 向上滚动时,您会看到折叠工具栏的奇怪反弹。 请参见下面布局的代码片段: 有人遇到过同样的问题吗?这是支持lib bug,还是我做错了什么? 编辑: 故障仅在您投掷屏幕时发生,而不是在拖动时发生 为了进行测

    • 我正在创建一个视图及其相应的应用程序。我的包含一些项目,如果单击这些项目,则会将用户带到 。 在< code>DetailViewActivity上,我实现了一个可折叠的工具栏。现在,每次打开< code>DetailViewActivity时,都会在可折叠工具栏内的< code>ImageView上设置不同的图像(具有不同的尺寸)。 我希望默认打开到一定高度(例如 256dp),但如果图像高度大

    • 我试图实现的是在滚动回收视图时隐藏折叠工具栏布局,如果再滚动,则折叠主工具栏。但我只能做到这一点http://i.imgur.com/t6wTW5H.gif. 所以我不能比这更进一步 如果我进一步滚动,我也想隐藏我的工具栏。