五个值分别是: scroll:子View随ScrollView一起滚动 enterAlways:只要ScrollView向下移动,子View立即响应滚动 enterAlwaysCollapsed:当ScrollView...滚动最顶层时,子View响应滚动事件,直至子View完全显示 exitUtilCollapsed:只要ScrollView向上滚动,子View立即响应滚动,直到达到最小高度 snap:当Scrollview...> 运行效果如下: 可以看到ToolBar和ImageView就好像是ScrollView里的内容一样,跟着上下滚动;不过需要注意的是,如果单独设置ImageView的为scroll,而不设置ToolBar...滚动,最后ImageView和ToolBar一起滚动。...总结 AppBarLayout是一个垂直的LinearLayout,内部可以布局多个View,在CoordinatorLayout内部与ScrollView共同作用,一共有五种scrollFlags设置
应用栏布局AppBarLayout Android5.0推出工具栏Toolbar用来替代ActionBar,灵活性和易用性大大增强,有关Toolbar的详细介绍参见《Android开发笔记(一百一十九...RecyclerView是其中一个特工,它可用来替代ListView和GridView;替代ScrollView的则另有其人,它便是嵌套滚动视图NestedScrollView,在Android5.0之后的...NestedScrollView继承自FrameLayout,其用法与ScrollView相似,如都必须且只能带一个直接子视图,都是允许视图上下滚动等等。...NestedScrollView多出来的功能,也就是跟AppBarLayout配合使用,以便触发Toolbar的滚动行为,你可以把它当作是兼容了Android5.0新特性的增强版ScrollView。...1、AppBarLayout的滚动依赖于主体视图的滚动,与主体视图相对应的,可将AppBarLayout称作头部视图。既然一个页面分为头部和主体两部分,那么就存在谁先滚谁后滚的问题了。
在各个布局文件里,最外围的是CoordinatorLayout这个控件,这个有什么作用呢,就我的大白话来说就是协调子View之间动作的一个父View,通过Behavior来给子view实现交互的。...控件互动实现滑动,总结就是CoordinatorLayout控件和app:layout_behavior来进行互动,进而CoordinatorLayout的子控件和app:layout_behavior...2.AppBarLayout 其次就是AppBarLayout,去除官方解释,简单来说就是它可以让你定制当某个可滚动View的滚动手势发生变化时,其内部的子View实现何种动作。...内部的子View通过在布局中加app:layout_scrollFlags设置执行的动作。...4.Toolbar动态变化 在此整体布局就已经完成,不过还有一个效果就是向上移动是toolbar的的View是动态变化的,一开始我以为这些控件会有这个功能吧,没想到找了很久都没找到,没办法只能自己实现了
AppBarLayout的子布局有5种滚动标识(上面代码CollapsingToolbarLayout中配置的app:layout_scrollFlags属性): scroll:所有想滚动出屏幕的view...CollapsingToolbarLayout的子布局有3种折叠模式(Toolbar中设置的app:layout_collapseMode) off:默认属性,布局将正常显示,无折叠行为。...NestedScrollView 在新版的support-v4兼容包里面有一个NestedScrollView控件,这个控件其实和普通的ScrollView并没有多大的区别,这个控件其实是Meterial...> 然后,我们需要定义AppBarLayout与滚动视图之间的联系。...AppBarLayout.ScrollingViewBehavior描述了RecyclerView与AppBarLayout之间的依赖关系。
折叠式布局 效果图如下 ?...文件 将里面的总布局改为CoordinatorLayout里面以此嵌套AppBarLayout 、Toolbar。...嵌套好之后设置一些简单的样式即可 到这一步基本上这个折叠布局已经完成了,然后只要填充相关的控件即可实现效果,要注意的点是Toolbar中放置的是你需要折叠和展开的控件,而AppBarLayout中放置的是...为了使体现更好可以AppBarLayout下面放一个滚动条,不要用ScrollView而是NestedScrollView因为这里你是要联动的。...,我们看一下布局 ?
的容器布局来使 ToolBar 响应滚动事件: AppBarLayout android:id="@+id/appbar"...> 注意:根据官方的 Google 文档,目前 AppBarLayout 需要作为直接子元素被嵌入 CoordinatorLayout 中。...然后,我们需要在 AppBarLayout 和 期望被滚动的 View 之间定义一个关联。...RecyclerView 上的任何滚动事件都将触发 AppBarLayout 或任何包含在其中的 view 的布局发生变化。...第三方滚动和视差效果库 除了使用上述的 CoordinatorLayout,还可以查看这些流行的第三方库来实现 ScrollView, ListView, ViewPager 和RecyclerView
- 作为一个为子视图之间相互协调手势效果的一个协调布局 - ) 该控件也是Design包下的一个控件,然而这个控件可以被称为Design包中最复杂、功能最强大的控件:CoordinatorLayout...比如:在CoordinatorLayout中使用AppBarLayout,如果AppBarLayout的子View(如ToolBar、TabLayout)标记了app:layout_scrollFlags...的下滑时ToolBar和TabLayout都会隐藏了。...可以滑动,我们必须还得有个条件,就是CoordinatorLayout布局下包裹一个可以滑动的布局,比如 RecyclerView,NestedScrollView(经过测试,ListView,ScrollView...为了使得Toolbar有滑动效果,必须做到如下三点: CoordinatorLayout必须作为整个布局的父布局容器。
1.2 CollapsingToolbarLayout不能独立存在, 它在设计的时候就被限定只能作为AppBarLayout的直接子布局来使用。...而AppBarLayout又必须是CoordinatorLayout的子布局; 1.3 水果详情界面布局框架: CoordinatorLayout下分三部分:水果标题栏、水果详情栏...不过CollapsingToolbarLayout不能独立存在,它在设计的时候就被限定只能作为AppBarLayout的直接子布局来使用。...而AppBarLayout又必须是CoordinatorLayout的子布局。 本文来做一个额外的活动作为水果的详情展示界面,当点击水果列表卡片的时候就进入这个界面。...不管是ScrollView还是NestedScroIIView,它们的内部都只允许存在一个直接子布局。
点击置顶ScrollView ? 这个置顶是滑动的置顶,不包括外层布局。 好了,效果图看到了,你有没有动力开始写代码呢?...setScreenHeight(int screenHeight) { this.screenHeight = screenHeight; } //设置滚动置顶按钮以及其点击监听事件...的顶点 this.smoothScrollTo(0, 0); } } activity_main.xml布局 <?...() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset...点击置顶ScrollView ? 代码下载地址
CollapsingToolbarLayout则只是一个对Toolbar进行包装,实现了可以对标题栏进行折叠功能的一个基本容器,它是作为AppBarLayout的直接子布局来使用。...这里的Toolbar、imageView都是AppbarLayout的子控件。...而且Toolbar也跑到下面去了,那么,我们在把ImageView和Toolbar换个位置试下: 布局代码结构: AppBarLayout> Toolbar app:layout_scrollFlags...Toolbar和ImageView不滑动了!!为什么,下面说。 很明显的一点,ImageView和Toolbar变成了线性垂直布局的了。...细心点的读者会发现,我们上面刚提到过AppBarLayout是继承自LinearLayout默认实现子控件垂直布局。
扩展或者缩小Toolbar或者头部,让主内容区域有更多的空间。 ? 控制哪个view应该扩展还是收缩,以及其显示大小比例,包括视差滚动效果parallax scrolling effects 动画。...---- Expanding and Collapsing Toolbars(Toolbar的扩展与收缩) ?...注意:根据官方的谷歌文档,AppBarLayout目前必须是第一个嵌套在CoordinatorLayout里面的子view。...然后,我们需要定义AppBarLayout与滚动视图之间的联系。...AppBarLayout.ScrollingViewBehavior描述了RecyclerView与AppBarLayout之间的依赖关系。
AppBarLayout:是一个vertical的LinearLayout封装控件,其子View应通过setScrollFlags或者xmL中的app:layout_scrollFlags来设置提供他们的变化状态...( Android开发之CoordinatorLayout打造滑动越界弹性放大图片效果有解释 ) AppBarLayout必须是CoordinatorLayout的直接子View,不然他一点作用都发挥不出来...AppBarLayout下方与之并列的滑动控件有比如RecyclerView,NestedScrollView(与AppBarLayout同属于CoordinatorLayout的子View),这些并列的...的控件,里面可以放置一个头部ImageView和一个toolbar。...在此注意AppBarLayout如果设置了layout_scrollFlags="snap",但是Viewpager没有设置layout_behavior,View一样会自动隐藏,让人误以为child与
headerLayout: 设置其头布局 menu: 设置菜单布局 详细使用请看我之前写的一篇博客:高大上的DrawerLayout 4、Toolbar 整体的架构搭建好了,剩下就是开始每个模块的内容了...Toolbar作为早期Android中ActionBar的替代品,定制性和操作性挺高了不少。使用的时候需要设置NoActionBar的主题。...作为ViewGroup包裹子View实现圆角和阴影的效果: <android.support.v7.widget.CardView android:layout_width="wrap_content...3. scroll|enterAlwaysCollapsed 当ScrollView向下滑动时,DependentView先折叠到最小高度(这里是0),然后将事件交给ScrollView,当ScrollView...Android 5.0提供了强大的转场动画,给每个item赋予了生命,跳转时,仿佛每块布局都参与了这次搬迁大运动。
AppBarLayout一般用于赋予Toolbar(不限于Toolbar)滚动行为,AppBarLayout是一个垂直的LinearLayout,实现了Material Design中app bar的scrolling...AppBarLayout的子View应该声明想要具有的“滚动行为”,这可以通过layout_scrollFlags属性或是setScrollFlags()方法来指定。...AppBarLayout只有作为CoordinatorLayout的直接子View时才能正常工作,为了让AppBarLayout能够知道何时滚动其子View, 我们还应该在CoordinatorLayout...布局中提供一个可滚动View,如:RecyclerView 布局文件 <?...3.enterAlwaysCollapsed 默认Toolbar不遮挡滑动控件,如果消失后再显示,则会遮挡,其他和scroll相同 ?
Behavior,实现了子 View 与 CoordinatorLayout、子 View 与子 View 之间一系列复杂的交互。...AppBarLayout 本身想提供一个 AppBar 的概念,所以严格地讲它本身与 Toolbar 没有直接的关系。...AppBarLayout 虽然和 Toolbar 没有直接联系,但是当 Toolbar 内置在 AppbarLayout 中的时候,Toolbar 的效果增强了,这使得开发者非常愿意用 AppBarLayout...AppbarLayout 的子 View 不仅仅是 Toolbar,它们可以是任何的 View,但通常和 Toolbar 配合使用。...> 在布局文件中添加一个图标,然后监听 AppBarLayout 的滑动来改变自身的透明度。
,直至高度缩为Toolbar的高度并成为Toolbar的背景色;向下滑动列表时,Header部分逐渐显示。...所以,CollapsingToolbarLayout 的使用一定离不开 AppBarLayout 和 Toolbar,并且作为 AppBarLayout 的直接子视图使用。...关于CollapsingToolbarLayout的属性在官网上可以查到,这里我只介绍案例中我们常用的几个属性:title标题,布局展开时放大显示在图片底部,布局折叠时缩小显示在Toolbar左侧。...作为AppBarLayout的直接子控件,CollapsingToolbarLayout包裹Header部分的ImageView和Toolbar,并分别设置二者的折叠模式。...可以控制FloatingActionButton的behavior和位置,如上图所示,当滚动列表是,FAB按钮会随着AppBarLayout而显示和隐藏,并自带缩放动画。
调度协调子布局 CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果。...CoordinatorLayout通过设置子View的 Behaviors来调度子View。...的介绍 AppBarLayout 是一个竖直排列的线性布局,它实现了很多Material Design风格app bar的设计概念,换句话说就是滚动手势。...它是设计用于直接AppBarLayout的子视图。...与 Actionbar 相比,Toolbar 明显要灵活的多。它不像 Actionbar 一样,一定要固定在Activity的顶部,而是可以放到界面的任意位置。
一个问题NestedScrollView高度加上顶部AppBarLayout高度没超过屏幕高低滑动有问题(只能在AppBarLayout范围内才能滑动); Toolbar android:id="@+id/toolbar"...当然 里面的toolbar 你们还可以设置其他的属性。 然后里面的NestedScrollView这货。 它和scrollview 基本上一样 但是它支持嵌套滚动 嵌套滚动默认是启用的。...android:fillViewportlike: android:fillViewport="true" Defines whether the scrollview should stretch...渲染指定的画布 //获取新的布局参数 generateLayoutParams(AttributeSet attrs) Returns a new set of layout parameters
可折叠工具栏布局CollapsingToolbarLayout 上一篇博文《Android开发笔记(一百三十五)应用栏布局AppBarLayout》阐述了如何把Toolbar往上滚动,那反过来,...不过,Android在实现展开效果的时候,并非直接让Toolbar展开或收缩,而是另外提供了CollapsingToolbarLayout,通过该布局包裹Toolbar,从而控制标题栏的展开和收缩行为。...--parallax : 视差模式,随着CollapsingToolbarLayout的收缩与展开,当前视图也跟着收缩与展开。...有关的滚动标志 上一篇博文《Android开发笔记(一百三十五)应用栏布局AppBarLayout》说过,AppBarLayout的子控件共有五个滚动标志,同时提到后面三个标志与CollapsingToolbarLayout...2、enterAlways : 头部与主体先一起滚动,头部滚到位后,主体继续向上或者向下滚。 同时声明scroll和enterAlways,滚动效果如下图所示: ?
为此,博主初步整理了Android在5.0和6.0之后的新增控件,及其对应的说明博文,给大家提供一个可资学习和借鉴的索引。...AppBarLayout Android 5.0 可折叠工具栏布局 CollapsingToolbarLayout Android 5.0 侧滑删除 SwipeDismissBehavior Android...3、第三类是v7兼容库和design库,它们有各自的库工程,开发者要在App工程中手工导入用到的兼容库。 v7与design库导入App工程后,编译出来的App即可兼容4.*的系统。...使用v7与design库的控件,类似于使用自定义控件,不但要在布局文件中引用完整路径的控件名称,还要在根布局声明命名空间(即添加属性xmlns:app="http://schemas.android.com...Android5.0和6.0之后补充了这么多新控件,自然有部分老控件变过时了,下面就列举部分新旧控件的替代关系: Toolbar:替代ActionBar RecyclerView:替代ListView和