Material Design之CollapsingToolbarLayout使用

news/2025/1/11 23:42:17/
CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout,给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端)。

使用CollapsingToolbarLayout:

<android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="256dp"android:fitsSystemWindows="true"><android.support.design.widget.CollapsingToolbarLayoutandroid:id="@+id/collapsing_toolbar_layout"android:layout_width="match_parent"android:layout_height="match_parent"app:contentScrim="#30469b"app:expandedTitleMarginStart="48dp"app:layout_scrollFlags="scroll|exitUntilCollapsed"><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="centerCrop"android:src="@mipmap/bg"app:layout_collapseMode="parallax"app:layout_collapseParallaxMultiplier="0.7"  /><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"app:layout_collapseMode="pin" /></android.support.design.widget.CollapsingToolbarLayout></android.support.design.widget.AppBarLayout>
我们在CollapsingToolbarLayout中设置了一个ImageView和一个Toolbar。并把这个CollapsingToolbarLayout放到AppBarLayout中作为一个整体。

1、在CollapsingToolbarLayout中:

我们设置了layout_scrollFlags:关于它的值我这里再说一下:

  • scroll - 想滚动就必须设置这个。
  • enterAlways - 实现quick return效果, 当向下移动时,立即显示View(比如Toolbar)。
  • exitUntilCollapsed - 向上滚动时收缩View,但可以固定Toolbar一直在上面。
  • enterAlwaysCollapsed - 当你的View已经设置minHeight属性又使用此标志时,你的View只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。
其中还设置了一些属性,简要说明一下:
  • contentScrim - 设置当完全CollapsingToolbarLayout折叠(收缩)后的背景颜色。
  • expandedTitleMarginStart - 设置扩张时候(还没有收缩时)title向左填充的距离。
没扩张时候如图:

2、在ImageView控件中:

我们设置了:

  • layout_collapseMode (折叠模式) - 有两个值:
      • pin -  设置为这个模式时,当CollapsingToolbarLayout完全收缩后,Toolbar还可以保留在屏幕上。
      • parallax - 设置为这个模式时,在内容滚动时,CollapsingToolbarLayout中的View(比如ImageView)也可以同时滚动,实现视差滚动效果,通常和layout_collapseParallaxMultiplier(设置视差因子)搭配使用。
  • layout_collapseParallaxMultiplier(视差因子) - 设置视差滚动因子,值为:0~1。 
3、在Toolbar控件中:
我们设置了layout_collapseMode(折叠模式):为pin。

综上分析:当设置了layout_behavior的控件响应起了CollapsingToolbarLayout中的layout_scrollFlags事件时,ImageView会有视差效果的向上滚动移除屏幕,当开始折叠时CollapsingToolbarLayout的背景色(也就是Toolbar的背景色)就会变为我们设置好的背景色,Toolbar也一直会固定在最顶端。
效果如图:


【注】:使用CollapsingToolbarLayout时必须把title设置到CollapsingToolbarLayout上,设置到Toolbar上不会显示。即:
mCollapsingToolbarLayout.setTitle(" ");
该变title的字体颜色:
扩张时候的title颜色:mCollapsingToolbarLayout.setExpandedTitleColor();
收缩后在Toolbar上显示时的title的颜色:mCollapsingToolbarLayout.setCollapsedTitleTextColor();
这个颜色的过度变化其实CollapsingToolbarLayout已经帮我们做好,它会自动的过度,比如我们把收缩后的title颜色设为绿色,效果如图:


没录好,反正效果出来了。
接下来看看代码怎么实现吧:
布局文件:
<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"tools:context=".MainActivity"><android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="256dp"android:fitsSystemWindows="true"><android.support.design.widget.CollapsingToolbarLayoutandroid:id="@+id/collapsing_toolbar_layout"android:layout_width="match_parent"android:layout_height="match_parent"app:contentScrim="#30469b"app:expandedTitleMarginStart="48dp"app:layout_scrollFlags="scroll|exitUntilCollapsed"><ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="centerCrop"android:src="@mipmap/bg"app:layout_collapseMode="parallax"app:layout_collapseParallaxMultiplier="0.7"  /><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"app:layout_collapseMode="pin" /></android.support.design.widget.CollapsingToolbarLayout></android.support.design.widget.AppBarLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"app:layout_behavior="@string/appbar_scrolling_view_behavior"><android.support.v7.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent"android:scrollbars="none" /></LinearLayout>
</android.support.design.widget.CoordinatorLayout>

代码文件:
    Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);setSupportActionBar(mToolbar);getSupportActionBar().setDisplayHomeAsUpEnabled(true);mToolbar.setNavigationOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {onBackPressed();}});//使用CollapsingToolbarLayout必须把title设置到CollapsingToolbarLayout上,设置到Toolbar上则不会显示CollapsingToolbarLayout mCollapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout);mCollapsingToolbarLayout.setTitle("CollapsingToolbarLayout");//通过CollapsingToolbarLayout修改字体颜色mCollapsingToolbarLayout.setExpandedTitleColor(Color.WHITE);//设置还没收缩时状态下字体颜色mCollapsingToolbarLayout.setCollapsedTitleTextColor(Color.GREEN);//设置收缩后Toolbar上字体的颜色

源码:http://download.csdn.net/detail/u010687392/8906931






http://www.ppmy.cn/news/644508.html

相关文章

选购好质量强化复合地板 必看主要指标

表面耐磨转数   公共场所用≥9000转&#xff0c;家庭用≥6000转。以上转数是指初始磨值&#xff0c;即表面饰层出现露底&#xff0c;而不是耐磨终值即地板全部穿。市场是有些复合地板明示的耐磨转数很高&#xff0c;但很有可能是标的耐磨终值。   吸水厚度膨胀率   …

Android Jetpack Compose之使用脚手架快速搭建APP布局结构

概述 现在市场上大多数的手机APP的通用布局结构都是顶部有个顶部导航栏&#xff0c;底部有个底部导航栏&#xff0c;例如抖音的布局结构&#xff1a; 点击导航栏里面的各个项又可以跳转到相应的页面&#xff0c;现在这种结构特别流行&#xff0c;如果我们使用传统的View来实现…

地板选购指南

>>经销商所谓“B级板” 正规来说&#xff0c;国家标准是不存在B级板这回事的&#xff0c;因为国家的质量标准都是用特级、一级之类的名称。话说回来&#xff0c;经销商所谓的B级板&#xff0c;就是色泽较差的板&#xff0c;但一般来说&#xff0c;质量上不会存在很大的差…

开发 react 应用最好用的脚手架 create-react-app

1. 介绍 在开发react应用时&#xff0c;应该没有人用传统的方法引入react的源文件(js)&#xff0c;然后在html编辑吧。 大家都是用webpack es6来结合react开发前端应用。 这个时候&#xff0c;我们可以手动使用npm来安装各种插件&#xff0c;来从头到尾自己搭建环境。 比如…

铺地板问题

有一长度为 N(1<&#xff2e;<10)的地板&#xff0c;给定两种不同瓷砖&#xff1a;一种长度为 1&#xff0c;另一种长度为 2&#xff0c;数目不限。要将这个长度为 N 的地板铺满&#xff0c;一共有多少种不同的铺法&#xff1f;例如&#xff0c;长度为 4 的地面一共有如下…

PCB材料简单介绍

1.铜箔 在电路板中&#xff0c;铜是最主要的导电材料&#xff0c;电路板上的信号基本都是由铜箔蚀刻而成的。 铜厚是工程师在做叠层设计时需要考虑的设计指标参数&#xff0c;对于高速电路设计&#xff0c;随着频率的提高&#xff0c;还需要考虑信号传输的趋肤效应影响&#xf…

塑木地板相对比引用

上一篇我们说了塑木地板&#xff0c; 宜家鲁恩149元的塑木地板&#xff0c; 要比国产的用料做工好一些。 下面说说实木地板&#xff0c; 这里可就不推荐宜家的了。 很多人都不知道&#xff0c;防腐木阳台户外地板竟有这么多购物玄学&#xff01; ▲户外实木地板的工艺分为三种&…

c语言铺地板,【北理乐学】铺地板

【题目描述】 有一名室内装潢工程队的配料员。他的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案例如下: 1 2 6 7 15 3 5 8 14 16 4 9 13 17 22 10 12 18 21 23 11 19 20 24 25 如何用C 语言生成这样的图形…