在 support design library 的 v23.2 版本中已经支持底部表了。...Persistent 形式的底部表 有两种方法来创建 Persistent 形式的底部表。第一种是用 NestedScrollView,然后就简单地将内容嵌到里面。...我们需要用一个点击事件来触发显示和隐藏。注意:由于这个已知的 issue,因此不要尝试在OnCreate() 方法中展开底部表。...谨记 ScrollView 不能与 CoordinatorLayout 一起使用。你将需要像这个示例中展示的那样用 NestedScrollView 来代替。...将你的内容包含在 NestedScrollView 中,然后在其上添加 app:layout_behavior 就会使你的滚动行为预期工作。
Bottom Sheets BottomSheetBehavior应用于CoordinatorLayout的一个子类, 使其成为持久的底部工作表。...这将是可视高度,展开高度或0,以防用户操作导致底部表单隐藏; STATE_HIDDEN: Bottom Sheets隐藏。...如果已经在Activity使用CoordinatorLayout,添加底部表单很简单: 将任何视图添加为CoordinatorLayout的直接子视图。... app:behavior_hideable:是否可以通过拖拽隐藏底部表单。...app:behavior_peekHeight:折叠状态的窥视高度。 app:behavior_skipCollapsed:如果底部表单可隐藏,并且设置为true,则表单不会处于折叠状态。
,是事件流中 CoordinatorLayout关联事件 而其中, 事件流中,嵌套滑动事件 中 我们 只是了解了 NestedScrollingChild , NestedScrollingParent...CoordinatorLayout 传递滑动事件的,其实相当于 NestedScrollingChild 最后真正消费事件的,其实是 Behavior的子类(自定义的,系统的) ---- NestedScrollView...---- 嵌套滑动事件 简单实例 注意: 这里是用 事件流中 嵌套滑动事件 去处理的 我们可以用NestedScrollView做事件发送,给外面的Parent发事件, 再传递给Behavior...这里layout,也很简单 就CoordinatorLayout中,包含 2个 NestedScrollView , 一个Behavior activity_main4.xml 隐藏按钮 大体layout <?
> 可以发现在官方提供的例子中,出现了许多的控件,这些控件都和CoordinatorLayout配合出各种效果,接下来我们就先简单介绍一下这些控件。...例如,如果视图只有底部25%显示,它将折叠。相反,如果它的底部75%可见,那么它将完全展开。...应该说在MD中,RecyclerView代替了ListView,而NestedScrollView代替了ScrollView,他们两个都可以用来跟ToolBar交互,实现上拉下滑中ToolBar的变化。...在NestedScrollView的名字中其实就可以看出他的作用了,Nested是嵌套的意思,而ToolBar基本需要嵌套使用。...上面NestedScrollView中app:layout_behavior="@string/appbar_scrolling_view_behavior"的Behavior是系统默认的,我们也可以根据自己的需求来自定义
从官方文档中我们可以看到: CoordinatorLayout是一个增强型的FrameLayout。...滚动事件,那么在CoordinatorLayout布局里其它标记了app:layout_behavior的子View(LinearLayout、RecyclerView、NestedScrollView...> 上述布局文件中,ToolBar标记了layout_scrollFlags滚动事件,那么当LinearLayout滚动时便可触发ToolBar中的layout_scrollFlags效果 即往上滑动隐藏...的下滑时ToolBar和TabLayout都会隐藏了。...并且给这些组件设置如下属性来告诉CoordinatorLayout,该组件是带有滑动行为的组件,然后CoordinatorLayout在接受到滑动时会通知AppBarLayout 中可滑动的Toolbar
聊聊Android嵌套滑动 最近工作中遇到了需求是使用 Bottom-Sheet 交互的弹窗,使用了 design 包里面的 CoordinatorLayout 和 BottomSheetBehavior...在嵌套滑动控件的场景中,可以在Android的事件分发机制本身做一些处理,外部拦截或者内部消化触摸事件。...(例如 NestedScrollView 、 RecyclerView ) 中,开始嵌套滑动都依赖NestedScrollingChildHelper 这个对象。...我们仍然从它的touch事件处理流程开始看: 在它的 onInterceptTouchEvent 中,当手势是 MOVE 的时候, 如果是垂直方向滑动并且达到滑动定义的距离,就开始执行滑动: 当手势是...例如上图的,当dy大于0,说明是向上滑动,如果最新的top值比展开的状态坐标小,那么就把状态置为 STATE_EXPANDED , 然后调用 offsetTopAndBottom 做距离上的变换。
在style中添加,隐藏原来的actionbar 一般会写一个style,用的时候,继承它即可 false 的时候,上面的Toolbar就会跟着滑动,并且会隐藏 反之,不设置,也就是false,就不会隐藏,只会固定不动 snap相关(scroll条件下)...---- 中场小节 CoordinatorLayout中, 如果NestedScrollView要和Toolbar互动的话(CollapsingToolbarLayout等之后在了解,这里不涉及)...这个时候,我们想做一个pending的TabLayout 滑动的时候,隐藏上面的Toolbar 于是, AppBarLayout中,Toolbar下面,添加一个TabLayout Toolbar添加...a5-2.gif 大体就这样了 代码见后面的地址 ---- 简单小节 CoordinatorLayout中,NestedScrollView和Toolbar联动 注意Toolbar外面要套AppBarLayout
最初想用 CoordinatorLayout 加 RecyclerView,但效果不好直接用,或者用 NestedScrollView 与 RecyclerView 组合使用。...但 NestedScrollView 与 RecyclerView 组合时怎么也不能使 RecyclerView 自己滑动,而 NestedScrollView 不滑动,事件拦截,禁止嵌套滑动,NestedScrollView...是否消费 RecyclerView 发过来的距离,怎么试都不行,最终还是尝试用 CoordinatorLayout 和 RecyclerView 组合。...,当要吸顶的 Item 滑到要隐藏的时候,让外层 CoordinatorLayout 消费滑动距离。...,说明滑到上面了,显示这个单独的 View stickyTitle.visibility = View.VISIBLE coordinatorLayout.canScroll
本文试着采用 NestedScrollView 嵌套 ListView的方法来实现折叠效果。具体结果如图所示: ?...> CoordinatorLayout> 上述布局需要注意的是: 必须采用CoordinatorLayout作为外层包裹,至于原因是由于使用...app:layout_scrollFlags="scroll|exitUntilCollapsed" 表示CoordinatorLayout的依赖元素滚动的时候,进行折叠。...解决NestedScrollView嵌套listView问题。 貌似网上一抓一大把,本文采用其中之一方案,复写listView。...题外话3 23.2.0中在CoordinatorLayout中使用Toolbar ,toolbar无法与顶部对齐,即顶部存在垂直间距。
那么Android5.0也同时给出了相应的解决方案,即推出MaterialDesign库,通过该库中的AppBarLayout控件,对Toolbar加以包装,从而实现顶部工具栏的动态变化效果。...,还要通知头部控件(通常是Toolbar),告诉头部控件你要怎么滚,是爱咋咋滚,还是满大街滚; 具体到实现上,要在工程中做以下修改: 1、添加几个库的支持,包括appcompat-v7库(Toolbar...下面是AppBarLayout结合NestedScrollView的布局文件代码例子: CoordinatorLayout xmlns:android...> CoordinatorLayout> 话说除了RecyclerView和NestedScrollView,还有哪些控件可以触发...这还得从CoordinatorLayout说起,查看CoordinatorLayout的源代码,发现它实现了接口NestedScrollingParent,奥秘就在其中,该接口定义了嵌套滚动的父辈行为,
其子View可以通过setScrollFlags()或在xml布局中通过app:layout_scrollFlags属性设置想要的滚动行为。...AppBarLayout很多行为依赖于CoordinatorLayout。如果你使用别的ViewGroup装AppBarLyout,很多功能就没有了。...> CoordinatorLayout> 父布局是CoordinatorLayout,然后主要两个布局:AppBarLayout以及NestedScrollView...,判定是显示还是隐藏。...总结 AppBarLayout是一个垂直的LinearLayout,内部可以布局多个View,在CoordinatorLayout内部与ScrollView共同作用,一共有五种scrollFlags设置
以前在自己公司的项目上有用过,最近把这个库中的 CoordinatorLayout单独拿出来做了个小例子写篇博文,纯粹当成整理复习笔记,下次如果需求再碰到这个,直接用上 。。。...2什么是 CoordinatorLayout CoordinatorLayout,是继承自 FrameLayout 。该布局非常好用,能够协调子元素之间的依赖关系。...CoordinatorLayout通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果。...常常与CoordinatorLayout一起使用的控件有AppBarLayout、CollapsingToolbarLayout、NestedScrollView以及Toolbar。...外层是CoordinatorLayout 包裹,因为CoordinatorLayout前面说了,它是继承自五大布局中的 FrameLayout,所以用法与之类似。
接着在AppBarLayout中再嵌套一个CollapsingToolbarLayout: CoordinatorLayout xmlns...> CoordinatorLayout> 我们知道ScrollView允许使用滚动的方式来查看屏幕以外的数据, 而NestedScrollView...由于CoordinatorLayout本身已经可以响应滚动事件了, 因此我们在它的内部就需要使用NestedScrollView或RecyclerView这样可以响应滚动事件的布局。...而这个时候向下拖动水果内容详情,就会执行一个完全相反的动画过程。最终恢复刚刚点进来的样子。 ---- 那个这里的话其实有个小尴尬,再次强调注意命名规范的重要性了。。。...在 CoordinatorLayout(外层监听框架)、 AppBarLayout(水果详情界面标题栏外层)、 CollapsingToolbarLayout(水果详情界面标题栏)这种嵌套结构的布局中
在上一讲中我们讲了NestedScrolling机制,其实android很多有些常用的控件都是支持NestedScrolling机制的,如RecyclerView,NestedScrollView等,...class RecyclerView extends ViewGroup implements ScrollingView, NestedScrollingChild2{} public class NestedScrollView...GoodsListView child, @NonNull View target, float velocityX, float velocityY, boolean consumed); 是不是和我们上一讲中的...onStopNestedScroll():看名字就知道了,当停止滑动时调用的方法,主要是执行当滑到一般停止时要怎么恢复还是隐藏商品列表的判断 onNestedFling(): 当手指快速一划时所触发的方法...,在代码中结合着Scroller,onNestedFling赋一个结束值给Scroller,Scroller会不断产生中间值直到结束为止。
AppBarLayout 本身有默认的 Behavior,这使得它能够响应依赖对象的位置变化或者是 CoordinatorLayout 中产生的嵌套滑动事件,这从它的源码中可以看出来。...CoordinatorLayout 是这个库的组织容器,一切基于 support design 扩展出来的特性都应该发生在 CoordinatorLayout 及它的子 View 体系中。 2....> 上面布局文件中,NestedScrollView 就是那个配套的滑动组件,它需要和 AppBarLayout 进行绑定,所以它必须指定 Behavior。...当然不是,在 CoordinatorLayout 中嵌套滑动的本质是一个 NestedScrollingChild 对象。...向上滑动的时候,Toolbar 先滑动,然后 NestedScrollView 中的内容再滑动。 向下滑动的时候,NestedScrollView 中的内容先滑动,然后 Toolbar 再一起滑动。
底部动作条 底部动作条(Bottom Sheets)是一个从屏幕底部边缘向上滑出的一个面板,使用这种方式向用户呈现一组功能。底部动作条呈现了简单、清晰、无需额外解释的一组操作。...使用环境 底部动作条(Bottom Sheets)特别适合有三个或者三个以上的操作需要提供给用户选择、并且不需要对操作有额外解释的情景。...如果只有两个或者更少的操作,或者需要详加描述的,可以考虑使用菜单(Menu)或者对话框替代。 底部动作条(Bottom Sheets)可以是列表样式的也可以是宫格样式的。...我们来看看官方展示的效果: ? 行为 显示底部动作条的时候,动画应该从屏幕底部边缘向上展开。根据上一步的内容,向用户展示用户上一步的操作之后能够继续操作的内容,并提供模态[1]的选择。...,slideOffset为0-1 完全收起为0 完全展开为1 } }); } } 当然BottomSheet这种效果是高度可扩展的,你可以在布局中实现你想要的任何效果
好吧,官方文档说 Behavior 是针对 CoordinatorLayout 中 child 的交互插件。记住这个词:插件。...我们现在将一个 NestedScrollView 放进布局文件中,滑动它的内容,它将产生嵌套滑动事件。Behavior 需要针对自身业务逻辑进行相应的处理。...它将会拦截这次 fling 动作,表明响应中的 child 自己处理了这次 fling 意图,那么 NestedScrollView 反而操作不了这个动作,因为系统会当作 child 消耗过这次事件。...CoordinatorLayout 布局 在 FrameLayout 中布局默认从左上角开始,但是可以通过 layoutparam 中的 Gravity 进行布局对齐。...Behavior 的存在,可以决定 CoordinatorLayout 中对应的 childview 的测量尺寸、布局位置、触摸响应。 最后,回到文章最开始的地方。
CoordinatorLayout是design包中的控件,作为外层控件可以协调子控件从而实现炫酷的效果等。...> NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android...> 外层是CoordinatorLayout,然后是AppBarLayout,然后是内容区和FloatingActionButton 这个AppBarLayout是有固定高度的,然后里面包着Toolbar...parallax :视差模式,在折叠的时候会有个视差折叠的效果。...只有在内容区可滑动的状态下会触发效果,所以内容区外层是NestedScrollView,app:layout_behavior="@string/appbar_scrolling_view_behavior
中,结合AppbarLayout, CollapsingToolbarLayout,Toolbar等可产生各种炫酷的效果。...AppBarLayout:是一个vertical的LinearLayout封装控件,其子View应通过setScrollFlags或者xmL中的app:layout_scrollFlags来设置提供他们的变化状态...AppBarLayout下方与之并列的滑动控件有比如RecyclerView,NestedScrollView(与AppBarLayout同属于CoordinatorLayout的子View),这些并列的...作用View随着被依赖View状态的变化而变化,有点类似于观察模式中的观察者和被观察者。...> 如果以上简单操作无法满足你的需求,最后附上参考博客文章 Android开发之CoordinatorLayout打造滑动越界弹性放大图片效果 使用CoordinatorLayout打造各种炫酷的效果
协调布局CoordinatorLayout Android自5.0之后对UI做了较大的提升,一个重大的改进是推出了MaterialDesign库,而该库的基础即为协调布局CoordinatorLayout...ViewGroup,实现效果类似于RelativeLayout,若要指定子视图在整个页面中的位置,有以下几个办法: 1、使用layout_gravity属性,指定子视图在CoordinatorLayout...: 1、FloatingActionButton会悬浮在其他视图之上,即使别的视图在布局文件中位于FloatingActionButton后面; 2、在隐藏、显示按钮上时会播放动画;其中隐藏操作是调用hide...下面是底部弹窗的演示截图: ?...下面是使用底部弹窗的布局例子: CoordinatorLayout xmlns:android="http://schemas.android.com
领取专属 10元无门槛券
手把手带您无忧上云