为方便自己以后学习,自己记录学习,大家也可以参考,有什么问题一起探讨。 今天学习RecyclerView,下边来说一下实现数据垂直滚动和数据横向滚动。先上图为敬: ?...因为RecyclerView不是内置在系统SDK中的,所以需要把完整的包路径写出来。...,里边的构造参数传入view参数,这个参数就是RecyclerView的最外层布局,这样就可以通过findViewById()来货渠道布局中的ImageView和TextView的实例了; BookAdapter...实现横向滚动: 修改book_item中的代码: <?xml version="1.0" encoding="utf-8"?...实现纵向和横向滚动 以上就是本文的全部内容,希望对大家的学习有所帮助。
您可能在开发过程中遇到过这种情况,在 Activity/Fragment 被重新创建后,RecyclerView 丢失了它之前保有的滚动位置信息。...通常这种情况发生的原因是由于异步加载 Adapter 数据,且数据在 RecyclerView 需要进行布局的时候尚未加载完成,导致 RecyclerView 无法恢复到之前的滚动位置。...从 1.2.0-alpha02 版本开始,Jetpack RecyclerView 提供了一个新的 API,可以让 Adapter 在数据加载完成之前阻塞布局行为 ,从而避免丢失滚动位置信息。...接下来我们会介绍如何使用这个新的 API,以及它的工作原理。 恢复至原有滚动位置 有好几种方法可以用来恢复 RecyclerView 至正确的滚动位置,您可能已经在实际项目中用到了这些方法。...如果根据您的项目实际情况无法采用这种方法,那也可以使用其他的方法,只是要么比较复杂 (比如避免在 RecyclerView 中设置 Adapter,但这样又有可能导致像 header 等 item 的显示问题
引言 最近,在做公司一个design折叠效果的时候遇到个问题,就是我们本身app的方法数太多了,dex分包技术还没搞定。不得不尽量缩减一些不必要的包、类。...当我们引入RecyclerView的时候,恰好是压死骆驼的最后一根稻草,故不得不采用其他方案来代替RecyclerView 和 CollapsingToolbarLayout实现的折叠效果。...true,不过这里兼容性还是存在问题的,特别是android 4.4版本的折叠布局的透明statusbar,不知道改为有没更好的方式。...,其他CollapsingToolbarLayout内的子view做相应的改变如(视差)或pin(不变)。...题外话:直接使用RecyclerView折叠动画不平滑问题 在stackoverflow上找到如下解决方案,大致是由于google官方留的Behavior坑。
本博文专门讲解和CoordinatorLayout相关的知识点,这也是Design Support Library中最重要与最难的部分。...---- Code Samples 官方为我们提供了一个漂亮的demo ,使用了 CoordinatorLayout 和其他的 design support library特性. ?...在RecyclerView或者任意支持嵌套滚动的view比如NestedScrollView上添加app:layout_behavior。...RecyclerView的任意滚动事件都将触发AppBarLayout或者AppBarLayout里面view的改变。...AppBarLayout里面定义的view只要设置了app:layout_scrollFlags属性,就可以在RecyclerView滚动事件发生的时候被触发: .support.design.widget.AppBarLayout
更强大的滚动控件RecyclerView 新建FruitAdapter02: package com.example.listviewtest; import android.support.v7.widget.RecyclerView...android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView...recyclerView = (RecyclerView) findViewById(R.id.recycler_view); LinearLayoutManager layoutManager...= new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); FruitAdapter02...adapter = new FruitAdapter02(fruitList); recyclerView.setAdapter(adapter); } private
,出现了许多的控件,这些控件都和CoordinatorLayout配合出各种效果,接下来我们就先简单介绍一下这些控件。...AppBarLayout的子布局有5种滚动标识(上面代码CollapsingToolbarLayout中配置的app:layout_scrollFlags属性): scroll:所有想滚动出屏幕的view...在RecyclerView或者任意支持嵌套滚动的view比如NestedScrollView上添加app:layout_behavior。...RecyclerView的任意滚动事件都将触发AppBarLayout或者AppBarLayout里面view的改变。...AppBarLayout里面定义的view只要设置了app:layout_scrollFlags属性,就可以在RecyclerView滚动事件发生的时候被触发: <android.support.design.widget.AppBarLayout
不过,Android在实现展开效果的时候,并非直接让Toolbar展开或收缩,而是另外提供了CollapsingToolbarLayout,通过该布局包裹Toolbar,从而控制标题栏的展开和收缩行为。...声明工具栏的滚动行为标志; 其实真正运行的时候,Toolbar的高度是固定不变的,变化高度的是CollapsingToolbarLayout。...只是许多App把这两者的背景设为一样的,所以看起来像是统一的标题栏在收缩和展开。...同时声明scroll和exitUntilCollapsed,滚动效果如下图所示: ?...同时声明scroll和snap,滚动效果如下图所示: ?
下面是AppBarLayout结合RecyclerView实现的工具栏向上滚动效果截图: ?...RecyclerView是其中一个特工,它可用来替代ListView和GridView;替代ScrollView的则另有其人,它便是嵌套滚动视图NestedScrollView,在Android5.0之后的...和NestedScrollView,还有哪些控件可以触发AppBarLayout的滚动行为呢?...1、AppBarLayout的滚动依赖于主体视图的滚动,与主体视图相对应的,可将AppBarLayout称作头部视图。既然一个页面分为头部和主体两部分,那么就存在谁先滚谁后滚的问题了。...同时声明scroll和enterAlways,滚动效果如下图所示: ? 后面三个标志都与CollapsingToolbarLayout有关,得配合该控件才能观察细节差异。
然后,我们需要在 AppBarLayout 和 期望被滚动的 View 之间定义一个关联。...在 RecyclerView 或其他类似 NestedScrollView 这样的可以嵌套滚动的 View 中加入 app:layout_behavior。...RecyclerView 上的任何滚动事件都将触发 AppBarLayout 或任何包含在其中的 view 的布局发生变化。...第三方滚动和视差效果库 除了使用上述的 CoordinatorLayout,还可以查看这些流行的第三方库来实现 ScrollView, ListView, ViewPager 和RecyclerView...间的滚动和视差效果。
了解 CollapsingToolbarLayout主要是提供一个可折叠的Toolbar容器,对容器中的不同View设置layout_collapseMode折叠模式,来达到不同的折叠效果。...其实就是向下滚动时Scrolling View和Child View之间的滚动优先级问题。...对比scroll和scroll | enterAlways设置,发生向下滚动事件时,前者优先滚动Scrolling View,后者优先滚动Child View,当优先滚动的一方已经全部滚进屏幕之后,另一方才开始滚动...这里涉及到Child View的高度和最小高度,向下滚动时,Child View先向下滚动最小高度值,然后Scrolling View开始滚动,到达边界时,Child View再向下滚动,直至显示完全。...在内容滚动时,CollapsingToolbarLayout中的View(比如ImageView)也可以同时滚动,实现视差滚动效果,通常和layout_collapseParallaxMultiplier
通常AppBarLayout和CollapsingToolbarLayout是一起使用的,也就是CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout...、Toolbar常常是组合应用的,AppBarLayout能够赋予Toolbar显示和消失的功能,而CollapsingToolbarLayout能够赋予Toolbar伸缩的功能 AppBarLayout...CollapsingToolbarLayout的使用方法也比较固定,AppBarLayout包裹CollapsingToolbarLayout,由于需要伸缩Toolbar,所以它使用的app:layout_scrollFlags...,可是设定app:layout_collapseMode属性,其中parallax表示随着滑动控件的滚动,最终该控件会消失,pin则表示,最终不会消失,废话不多说,来看下xml <?...,否则没有效果 另外需要注意的是,Toolbar的title属性并不会起作用,我们需要在代码中调用CollapsingToolbarLayout的setTitle方法才能设置标题 private CollapsingToolbarLayout
SwipeRefreshLayout是官方提供的下拉刷新控件,在使用过程碰到一些小问题和大家分享下....下面的代码只能监听下拉手势所引发的事件 mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener...,但不会触发上面的监听 //这段代码如果写在onCreate方法中是无效的,因为SwipeRefreshLayout控件还未完全加载,可以使用延迟加载的方法使用下面的代码 mSwipeRefreshLayout.setRefreshing...也不会有下拉刷新的视图 RecyclerView有一点想要分享的是,如果你没有把它和Adapter关联,他会跳过加载,不会实际去初始化这个控件,虽然在布局代码写着 这个和我上面提到SwipeRefreshLayout...提到那个问题放在一起使用,就会产生你下拉不会触发事件的问题.
简评:Android Support Library 26 中终于实现了一个等待已久的功能: RecyclerView 的快速滚动 。...Android 官方早就在建议开发者使用 RecyclerView 替代 ListView,RecyclerView 也确实表现要好于 ListView,除了没有快速滚动,就像下面这样: ?...因此,之前要想在 RecyclerView 上实现快速滚动,往往是依赖第三方库,比如:FutureMind/recycler-fast-scroll 或 timusus/RecyclerView-FastScroll...现在,来看一看具体怎么实现 RecyclerView 的快速滚动: <?xml version="1.0" encoding="utf-8"?...以上就是本文的全部内容,希望对大家的学习有所帮助。
还有就是只能够纵向滚动,如果要想实现横向移动,用 ListView 是做不到的。 RecyclerView 可以说是一个增强版的 ListView 。...它不仅实现了和 ListView 同样的效果,而且还优化了 ListView 存在的各种不足。...RecyclerView 现在可是官方推荐使用的滚动控件哦O(∩_∩)O~ 1 基本用法 RecyclerView 也是新增的控件,所以必须先在项目的 build.gradle 中添加相应的依赖库才能使用...然后在 ViewHolder 的构造函数中传入一个 View 参数,它是 RecyclerView 子项的最外层布局,所以我们可以通过它来取得布局中的 ImageView 和 TextView 的实例。...recyclerView 示例 我们使用了 recyclerView 创建出了 ListView 的效果,而且代码逻辑更清晰咯。 2 横向滚动 现在让我们把这些猫变为 “横向滚动” 吧。
其中, scroll表示CollapsingToolbarLayout会随着水果内容详情的滚动一起滚动, exitUntilCollapsed表示当CollapsingToolbarLayout随着滚动完成折叠之后就保留在界面上...这里在CollapsingToolbarLayout中定义了一个ImageView和一个Toolbar,也即这个高级版的标题栏是由普通的标题栏加上图片组合而成的。...由于CoordinatorLayout本身已经可以响应滚动事件了, 因此我们在它的内部就需要使用NestedScrollView或RecyclerView这样可以响应滚动事件的布局。...另外,通过 app:layout_behavior属性指定一个布局行为,这和之前 第四弹 在RecyclerView中的用法是一模一样的。...然后在FruitAcuvityTheme中将状态栏的颜色指定成透明色, 由于values-v21目录是只有Android5.0及以上的系统才会去读取的, 因此这么声明是没有问题的。
控件以及创建子项布局和适配器类。...相对第一种方法,第二种方法是比较便捷的,可以不需要手动输入和知道当前版本,较少了出错率。 第二步:布局加入RecyclerView控件以及创建子项布局和适配器类。...咱们创建一个Fruit实体类,并添加构造器和重写get()方法: ?...子项的数据进行赋值,会在每个子项被滚动到屏幕内的时候执行 @Override public void onBindViewHolder(final FruitAdapet.ViewHolder...); 对了运行的效果如下,可以实现上下滚动: ?
"就是这句和CoordinatorLayout控件互动实现滑动,总结就是CoordinatorLayout控件和app:layout_behavior来进行互动,进而CoordinatorLayout的子控件和...2.AppBarLayout 其次就是AppBarLayout,去除官方解释,简单来说就是它可以让你定制当某个可滚动View的滚动手势发生变化时,其内部的子View实现何种动作。...enterAlways:值设为enterAlways的View,当ScrollView往下滚动时,该View会直接往下滚动。而不用考虑ScrollView是否在滚动。...这是layout_srcollFlags里可以设置的各个属性的解释,考虑文章的重点是模仿支付宝所以没有篇幅和每个属性都给个效果图,所以各属性你们有空还要自己试一试,这样子才能掌握更好。...3.CollapsingToolbarLayout 是用来对Toolbar进行再次包装的ViewGroup,主要是用于实现折叠的App Bar效果。
会 跟着 滚动 事件响应, layout_scrollFlags=“snap”的时候 在Scroll滑动事件结束以前 ,如果这个View部分可见,那么这个View会停在最接近当前View的位置。...其实相对于前 一个例子,只是把 摆放RecyclerView 的位置替换成ViewPager而已,为了有页面导航器的效果,再使用 TabLayout而已,而TabLayout 在我们滑动的时候最终会停靠在...结构图如图片所示,先说明CollapsingToolbarLayout的变化 CollapsingToolbarLayout里面 包含ImageView 和ToolBar,ImageView的app:...- 对于AppBarLayout,我们主要 讲解了这个属性app:layout_scrollFlags,设置不同 的属性我们可以在滚动的时候显示不同 的效果 - 对于CollapsingToolbarLayout...,我们主要讲解了app:layout_collapseMode这个属性,设置不同的值,我们可以让其子View呈现不同的 炫酷效果,如parallax和pin等 CoordinatorLayout的相关用法还有很多
AppBarLayout下方与之并列的滑动控件有比如RecyclerView,NestedScrollView(与AppBarLayout同属于CoordinatorLayout的子View),这些并列的...,一套全新的事件处理方式,它可以指定“作用View”和“被依赖View”,要改变行为的那个View就是child,dependency是作为触发器影响child的那个View。...作用View随着被依赖View状态的变化而变化,有点类似于观察模式中的观察者和被观察者。...:是一个专门用来包裹Toolbar的控件,里面可以放置一个头部ImageView和一个toolbar。...内部的子View一般都要加上属性:app:layout_collapseMode="",常用值是parallax(视差滚动),pin(固定)。
在 GitHub 开源了一种新的 Header View + RecyclerView 实现方式,使用 CoordinatorLayout 把 header 抽离出 RecyclerView,并做到上下滑联动...说明: 可以使用 SmoothAppBarLayout 这个第三方库,它是一个提供顺滑滚动的 AppBarLayout 补足库,这一个层次必须置于 RecyclerView 代码下面,也就是界面上是在...RecyclerView 的上层,这样AppBarLayout 包裹的 header views 才能接收到点击事件(其实根本原因是,RV 对于 Padding 部分也会拦截手势所以不得不这么做)。...如果想要列表上滑的时候,状态栏跟随着滑动显示出阴影效果,可以在 FrameLayout 外再包裹一层 android.support.design.widget.CollapsingToolbarLayout...由于受制于微信公众平台内容字数的限制,无法展现源码,源码和具体内容,欢迎大家访问drakeet的博客。
领取专属 10元无门槛券
手把手带您无忧上云