【问题标题】:(Design Support Library) CollapsingToolbarLayout -- Toolbar not getting pinned on collapse(设计支持库)CollapsingToolbarLayout -- 工具栏在折叠时未固定
【发布时间】:2015-08-14 09:16:47
【问题描述】:

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

我没有做任何与我的布局不同的事情。事实上,我用他的样式替换了我的样式,并放弃了他的布局。我想知道是否使用工具栏而不是 android.support.v7.widget.Toolbar 会导致这种情况。

这就是问题所在。

这是我的 AppBar 部分的 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>

【问题讨论】:

  • 您对app:layout_behavior="@string/appbar_scrolling_view_behavior"有何看法?
  • 你是如何制作 gif 的?

标签: android android-support-library android-toolbar androiddesignsupport android-collapsingtoolbarlayout


【解决方案1】:

您的直觉是正确的:CollapsingToolbarLayout 确实依赖于您使用支持Toolbar - 它使用它来设置CollapsingToolbarLayout 的最小高度(以及许多其他内容)。您应该切换到使用Toolbar 的支持版本,以确保CollapsingToolbarLayout 的最佳体验。

【讨论】:

    【解决方案2】:
    <?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>
    

    【讨论】:

    • 必须为 FloatingActionButton 添加宽度和高度。其余的都很完美:)
    • @Bhavinkumar Patel:如何滚动工具栏,就像在什么情况下一样。当我在做工具栏时,它就消失了
    • @V V 如果您想在滚动时消失工具栏,只需将 app:layout_collapseMode="pin" 更改为 app:layout_collapseMode="complete"
    【解决方案3】:
    1. 使用app:layout_collapseMode="pin" 确保工具栏 视图本身保持固定在屏幕顶部 崩溃。
    2. 更好的是,当您使用 CollapsingToolbarLayout 和 工具栏合起来,标题会自动变大的时候 布局完全可见,然后转换为其默认大小 它已折叠。
    3. 请注意,在这些情况下,您应该调用 setTitle()CollapsingToolbarLayout 上,而不是在 工具栏本身。

      有关实施的更多详细信息,请访问Android Developers
      Blog
      或有关软件包的详细信息CollapsingToolbarLayout

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-07-20
      • 2023-04-05
      相关资源
      最近更新 更多