首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当CollapsingToolbarLayout折叠时显示工具栏图标

CollapsingToolbarLayout 是 Android 中用于实现可折叠工具栏的一个组件,它是 CoordinatorLayout 的子视图,通常与 AppBarLayoutToolbar 结合使用。当 CollapsingToolbarLayout 折叠时显示工具栏图标,可以通过设置 CollapsingToolbarLayout 的属性来实现。

基础概念

  • CoordinatorLayout: 是一个超级布局,用于协调其子视图之间的交互。
  • AppBarLayout: 是一个垂直的 LinearLayout,用于实现 Material Design 中的工具栏滑动效果。
  • CollapsingToolbarLayout: 是一个可以折叠的工具栏布局,通常用于实现类似文章详情页的效果。
  • Toolbar: 是一个通用的工具栏视图,可以替代传统的 ActionBar

相关优势

  • 动态效果: 可以根据用户的滚动行为动态改变工具栏的显示状态。
  • 空间优化: 在内容较多时,可以将工具栏折叠起来,为用户提供更多的可视空间。
  • 丰富的自定义: 可以通过各种属性来定制折叠过程中的动画和显示效果。

类型

  • 展开状态: 工具栏完全展开,通常显示标题和一些操作按钮。
  • 中间状态: 工具栏部分折叠,可能只显示图标。
  • 折叠状态: 工具栏完全折叠,通常只显示应用的图标。

应用场景

  • 文章详情页: 用户滚动查看内容时,工具栏可以逐渐折叠。
  • 列表页面: 如新闻列表或商品列表,用户向下滚动时隐藏工具栏。

示例代码

以下是一个简单的示例,展示如何在 CollapsingToolbarLayout 折叠时显示工具栏图标:

代码语言:txt
复制
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:scaleType="centerCrop"
                android:src="@drawable/header_image"
                app:layout_collapseMode="parallax"/>

            <androidx.appcompat.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"/>

        </com.google.android.material.appbar.CollapsingToolbarLayout>
    </com.google.android.material.appbar.AppBarLayout>

    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <!-- 这里放置你的内容视图 -->

    </androidx.core.widget.NestedScrollView>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

遇到的问题及解决方法

问题: 当 CollapsingToolbarLayout 折叠时,工具栏图标不显示。

原因: 可能是因为 Toolbarlayout_collapseMode 属性没有设置为 pin,导致工具栏在折叠时被隐藏。

解决方法: 确保 Toolbarapp:layout_collapseMode="pin" 属性已设置,这样工具栏在折叠时会固定在顶部显示。

代码语言:txt
复制
<androidx.appcompat.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"/>

通过以上设置,当 CollapsingToolbarLayout 折叠时,工具栏图标将会保持显示状态。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发笔记(一百三十六)可折叠工具栏布局CollapsingToolbarLayout

可折叠工具栏布局CollapsingToolbarLayout 上一篇博文《Android开发笔记(一百三十五)应用栏布局AppBarLayout》阐述了如何把Toolbar往上滚动,那反过来,...这里要明确一点,Toolbar本身是页面顶部的工具栏,其上没有本页面的其它控件了,如果Toolbar被拉下来了,那Toolbar上面的空白该显示什么?...折叠系数可通过属性app:layout_collapseParallaxMultiplier配置,该属性为1.0时,折叠效果同pin模式即固定不动;该属性为0.0时,折叠效果等同于none模式,即也跟着移动相同距离...下面是标题栏在折叠时显示渐变图片的效果图: ?...3、exitUntilCollapsed : 该标志保证页面上至少能看到最小化的工具栏,不会完全看不到工具栏。具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。

3.3K30

通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout

假设你定义了一个最小高度(minHeight)同时enterAlways也定义了,那么view将在到达这个最小高度的时候开始显示,并且从这个时候开始慢慢展开,当滚动到顶部的时候展开完。...CollapsingToolbarLayout的介绍 CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout,给它设置layout_scrollFlags...CollapsingToolbarLayout的子View中可以设置这两个属性 1、ayout_collapseMode (折叠模式) - 有两个值: pin - 设置为这个模式时,当CollapsingToolbarLayout...我在做这里的时候遇到一个问题,那就是CollapsingToolbarLayout里的Title的问题,一般默认是显示的,即使你不写,它也有会一个默认值一直显示在那里,等折叠收缩完的时候,停留在标题工具栏上...相互建立联系的方法如下: setupWithViewPager(ViewPager viewPager) 如果选项卡里带有图标或者仅仅只有图标时就麻烦了,那个选项卡会变得什么都没有了。

2.3K90
  • Android之MaterialDesign应用技术2-仿支付宝上滑搜索框缓慢消失

    1.1:CoordinatorLayout中设置   前面的添加依赖,在上一篇中已经说过,在这就不在重复了,协调者布局中这次又加入了一个新的布局CollapsingToolbarLayout(折叠工具栏布局...),很明显上面的效果图中的工具栏上滑的同时把图片折叠进去了,这是一个动画效果,如果不是MaterialDesign库的强大,这都是我们自己写。...竟然折叠的部分是toolbar和背景图片,这就理所应当的把这两个空间写在CollapsingToolbarLayout中,因为上面协调者布局和appbar布局很简单,这里就不在写了,只贴出折叠布局代码(...里面的注释有贴出后加的,用该代码时要注意语法)。...当EditText获取得光标的时候,EditText的hint会自己显示在上方,并且有动画过渡。 ?

    1.6K100

    Android开发笔记(一百三十五)应用栏布局AppBarLayout

    2、AppBarLayout内部的高度也可能变化,比如它嵌套了可折叠工具栏布局CollapsingToolbarLayout,有关可折叠工具栏布局的详细介绍参见《Android开发笔记(一百三十六)可折叠工具栏布局...CollapsingToolbarLayout》。...同理,拉动AppBarLayout也有类似情况,当松开手指后,AppBarLayout得判断要不要继续向上收缩,或是继续向下展开。...所以本文只做下面三个标志的概念解释,有关的效果图参见《Android开发笔记(一百三十六)可折叠工具栏布局CollapsingToolbarLayout》。...3、exitUntilCollapsed : 该标志保证页面上至少能看到最小化的工具栏,不会完全看不到工具栏。具体的滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠的最小高度。

    2K40

    CoordinatorLayout使用全解析

    例如,如果视图只有底部25%显示,它将折叠。相反,如果它的底部75%可见,那么它将完全展开。...CollapsingToolbarLayout可以通过app:contentScrim设置折叠时工具栏布局的颜色,通过app:statusBarScrim设置折叠时状态栏的颜色。...CollapsingToolbarLayout的子布局有3种折叠模式(Toolbar中设置的app:layout_collapseMode) off:默认属性,布局将正常显示,无折叠行为。...pin:CollapsingToolbarLayout折叠后,此布局将固定在顶部。 parallax:CollapsingToolbarLayout折叠时,此布局也会有视差折叠效果。...当CollapsingToolbarLayout的子布局设置了parallax模式时,我们还可以通过app:layout_collapseParallaxMultiplier设置视差滚动因子,值为:0~

    2.2K20

    CollapsingToolbarLayout使用

    CollapsingToolbarLayout 可以看到,Toolbar的标题放大并在下方显示,当我们向上滑动列表时,顶部Header部分的图片向上折叠隐藏,标题向上移动并缩小,同时以渐显式的方式显示蓝色主题...关于CollapsingToolbarLayout的属性在官网上可以查到,这里我只介绍案例中我们常用的几个属性:title标题,布局展开时放大显示在图片底部,布局折叠时缩小显示在Toolbar左侧。...attr/colorPrimary",即显示为Toolbar颜色,应用的主题色;layout_collapseMode折叠模式,设置其他控件滚动时自身的交互行为,有两种取值:parallax,折叠视差效果...当设置为1.0,滚动列表时图片不会折叠移动; 代码实现: 关于CoordinatorLayout作为根布局容器如何协调子控件之间的交互行为,可以参考上一篇文章,这里我介绍一下本例中几个新的注意点。...表示控件向上折叠退出并以最小高度停留在顶部;前面介绍CollapsingToolbarLayout属性时介绍到了statusBarScrim的使用,其实也可以通过android:fitsSystemWindows

    2.5K60

    使用CoordinatorLayout打造各种炫酷的效果

    int SCROLL_FLAG_ENTER_ALWAYS_COLLAPSED 另一种enterAlways,但是只显示折叠后的高度。...简单来说 ,CollapsingToolbarLayout是工具栏的包装器,它通常作为AppBarLayout的孩子。...主要实现以下功能 - Collapsing title(可以折叠 的 标题 ) - Content scrim(内容装饰),当我们滑动的位置 到达一定阀值的时候,内容 装饰将会被显示或者隐藏...(当这个View到达 CollapsingToolbarLayout的底部的时候,这个View 将会被放置,即代替整个CollapsingToolbarLayout) 我们有两种方法可以设置这个常量,...的底部的时候,会代替整个CollapsingToolbarLayout显示 接着说明TabLayout的变化 从前面的描述我们已经知道当 没有指定app:layout_scrollFlags的时候,最终

    5K10

    【Android】5.x炫酷标题栏动画使用理解

    题主之前一直以为标题栏也就是一个简单的导航栏,也就是放个标题,配几个图标而已。但其实还可以像上面一样实现一些较酷炫的效果的。...当滑动屏幕时,子控件都做出了相应的行为(滑出屏幕,固定顶端等),这些行为其实就是AppbarLayout提供给它子控件的功能。...至于CollapsingToolbarLayout则是给子控件提供了折叠的功能,什么是折叠呢?...我们上面的代码中,Toolbar是AppBarLayout的第一个子控件,虽然设置了scroll值,但也设置了exitUntilCollapsed值,这个的作用是,当向上滑动时,这个控件也会跟着滑出屏幕...至于作用其实就是当你一向下滑动屏幕时,控件就能马上显示出来,不必滑到顶端。 snap:当你停止滑到屏幕时,控件自动恢复原样或者自动滑到底。

    1.1K60

    Material Design之CollapsingToolbarLayout 相关属性和方法介绍

    开始无知的我还以为是监听 onTouchListener 根据滑动的距离和位置来改变显示效果来实现的。 唉,今天无意中看到这个 CollapsingToolbarLayout 。...在折叠的时候 显示的toolbar的id 13.app:layout_scrollFlags="scroll|exitUntilCollapsed"  scroll - 想滚动就必须设置这个。...enterAlways - 实现quick return效果, 当向下移动时,立即显示View(比如Toolbar)。...--layout_collapseMode (折叠模式) - 有两个值: pin - 设置为这个模式时,当CollapsingToolbarLayout完全收缩后,Toolbar...parallax - 设置为这个模式时,在内容滚动时,CollapsingToolbarLayout中的View(比如ImageView)也可以同时滚动,实现视差滚动效果,通常和layout_collapseParallaxMultiplier

    96730

    【翻译】MotionLayout实现折叠工具栏(Part 1)

    【翻译】MotionLayout实现折叠工具栏(Part 1) 2018-08-13 by Liuqingwen | Tags: Android 翻译 | Hits ?...在我们开始之前,有必要在这里澄清一下:在 CoordinatorLayout 中使用 CollapsingToolbarLayout 来实现折叠工具栏是没任何问题的。...举个例子,一个折叠工具栏应该根据用户的滚动进行展开和折叠,所以实际动画的运行应该时刻跟随用户的拖拽进行。这也是那些框架办不到的地方。 废话不多说,让我们看下我们所要尝试模拟做到的行为动作。...这里的代码展示了一个折叠工具栏,应用了 Material Components Library 库里的 CollapsingToolbarLayout 和 CoordinatorLayout 布局。...我们使用的是一个标准的 ImageView 控件,当其位于 ConstraintSet 下的 Constraint 元素中时,其主要的属性变成可以是 ConstraintLayout.LayoutParams

    2K31

    细说 AppbarLayout,如何理解可折叠 Toolbar 的定制

    当 AppBarLayout 中的内容要从 CoordinatorLayout 外面进入内部时,我们用 enter 指代这种行为,对应的手势就是向下滑动。...当 AppBarLayout 中的内容从 CoordinatorLayout 内部向外部方向移动时,我们用 exit 指代这种行为,对应的手势是向上滑动。...Toolbar 先滑动,等到视图可见范围高度为 collapsed 指定高度时它会静止,等到 NestedScrollView 内容完全显示在 Toolbar 下方时它再一起滑动,它的动作是 3 段式的...也就是说 snap 代表一种吸附的行为,当一个滑动事件结束后,Toolbar 会向最接近它的边缘自行滚动。那什么是最近的概念呢?比如向上滑动时,如果滑过了一半它就向上滚动,否则滚动回原来的地方。...指定 Contetn scrim 后,CollapsingToolbarLayout 会在折叠状态显示指定的颜色或者是图片,它就像是一块纱布一样遮住 title 下面的内容,所以被称为内容纱布。

    3.1K30

    Material Design 实战 之 第六弹 —— 可折叠式标题栏(CollapsingToolbarLayout) & 系统差异型的功能实现(充分利用系统状态栏空间)

    本文来做一个额外的活动作为水果的详情展示界面,当点击水果列表卡片的时候就进入这个界面。...app:contentScrim指定CollapsmgToolbarLayout在趋于折叠状态以及折叠之后的背景色, 其实CollapsingToolbarLayout在折叠之后就是一个普通的Toolbar...其中, scroll表示CollapsingToolbarLayout会随着水果内容详情的滚动一起滚动, exitUntilCollapsed表示当CollapsingToolbarLayout随着滚动完成折叠之后就保留在界面上...以及, app:layout_collapseMode用于指定当前控件在CollapsingToolbarLayout折叠过程中的折叠模式, 其中Toolbar指定成pin,表示在折叠的过程中位置始终保持不变...首先需要提前准备好一个图标, 这里放置了一张ic_comment.png到drawable-xxhdpi目录下。 然后修改activity_fruit.xml: ......

    2.3K40

    NestedScrollView 嵌套 ListView 实现滑动折叠效果

    当我们引入RecyclerView的时候,恰好是压死骆驼的最后一根稻草,故不得不采用其他方案来代替RecyclerView 和 CollapsingToolbarLayout实现的折叠效果。...app:contentScrim 表示CollapsingToolbarLayout折叠以后,toolbar的颜色。...enterAlways - 实现quick return效果, 当向下移动时,立即显示View(比如Toolbar). exitUntilCollapsed - 向上滚动时收缩View,但可以固定Toolbar...enterAlwaysCollapsed - 当你的View已经设置minHeight属性又使用此标志时,你的View只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。...表示不动,parallax视差效果 将 app:layout_behavior="@string/appbar_scrolling_view_behavior"指定给NestedScrollView,即当该控件滑动的时候

    3.5K50

    Flutter之SliverAppBar

    SliverAppBar控件可以实现页面头部区域展开、折叠的效果,类似于Android中的CollapsingToolbarLayout。 先看下SliverAppBar实现的效果,效果图如下: ?...SliverAppBar中有一个非常重要的参数flexibleSpace,flexibleSpace是SliverAppBar中展开和折叠区域,flexibleSpace与expandedHeight一起使用...FlexibleSpaceBar( ), ), SliverAppBar其他常用属性说明如下: 属性 说明 leading 左侧控件,通常情况下为"返回"图标...floating 设置为true时,向下滑动时,即使当前CustomScrollView不在顶部,SliverAppBar也会跟着一起向下出现 pinned 设置为true时,当SliverAppBar...内容滑出屏幕时,将始终渲染一个固定在顶部的收起状态 snap 设置为true时,当手指放开时,SliverAppBar会根据当前的位置进行调整,始终保持展开或收起的状态,此效果在floating=true

    1.4K30

    AppBarLayout和CollapsingToolbarLayout的闲谈

    了解 CollapsingToolbarLayout主要是提供一个可折叠的Toolbar容器,对容器中的不同View设置layout_collapseMode折叠模式,来达到不同的折叠效果。...对比scroll和scroll | enterAlways设置,发生向下滚动事件时,前者优先滚动Scrolling View,后者优先滚动Child View,当优先滚动的一方已经全部滚进屏幕之后,另一方才开始滚动...这里涉及到Child View的高度和最小高度,向下滚动时,Child View先向下滚动最小高度值,然后Scrolling View开始滚动,到达边界时,Child View再向下滚动,直至显示完全。...也就是说,Child View不会存在局部显示的情况,滚动Child View的部分高度,当我们松开手指时,Child View要么向上全部滚出屏幕,要么向下全部滚进屏幕,有点类似ViewPager的左右滑动...属性contentScrim 设置当完全CollapsingToolbarLayout折叠(收缩)后的背景颜色。

    1.8K30

    【翻译】MotionLayout实现折叠工具栏(Part 2)

    通过上一篇文章我们了解了基本的折叠工具栏动画行为,使用的是 MotionLayout ,第一次尝试的效果与在 CoordinatorLayout 中使用 CollapsingToolbarLayout...也就是说:随着工具栏折叠动画的开始,图片便立刻发生渐变,一直持续到工具栏完全到达折叠状态: ? 这个问题实际上很容易解决,这要感谢 MotionLayout 的另一个非常重要的特性:关键帧。...目前来说,发生的情况是:图片的透明度在过渡动画还没有达到 60% 之前是不会发生变化的(也就是至少超过一半的折叠状态下不发生变化),接下来会慢慢开始淡出,直到工具栏达到 90% 折叠时完全透明。 ?...最终标题文本会走在工具栏折叠动画之前,接着在折叠完全结束的时候直接回落到正确的位置上: ?...但是在目前来说,添加 tools:showPaths="true" 这段代码能够让 MotionLayout 计算并显示这三个被过渡动画所影响的视图控件的轨迹路线:标题文本控件(顶部,中心左侧),工具栏的海滩小排屋图片

    1.7K30

    Android开发笔记(一百四十四)高仿支付宝的头部伸缩动画

    再嵌套CollapsingToolbarLayout再嵌套Toolbar的布局。...; 3、CollapsingToolbarLayout嵌套Toolbar,这是为了定义导航栏上方无论何时都要显示的长条区域,其中Toolbar还要定义两个不同的样式布局,用于分别显示展开与收缩状态时的工具栏界面...这个渐变动画其实可分为两段: 1、导航栏从展开状态向上收缩时,头部的各控件要慢慢向背景色过渡,也就是淡入效果; 2、导航栏向上收缩到一半,顶部的工具栏要换成收缩状态下的工具栏布局,并且随着导航栏继续向上收缩...,新工具栏上的各控件也要慢慢变得清晰起来,也就是淡出效果。...; 2、导航栏向下展开到一半,顶部的工具栏要换成展开状态下的工具栏布局,并且随着导航栏继续向下展开,新工具栏上的各控件也要慢慢变得清晰起来,也就是淡出效果。

    1.2K10
    领券