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

恢复 RecyclerView 滚动位置

您可能在开发过程中遇到过这种情况,在 Activity/Fragment 被重新创建后,RecyclerView 丢失了它之前保有的滚动位置信息。...通常这种情况发生原因是由于异步加载 Adapter 数据,且数据在 RecyclerView 需要进行布局时候尚未加载完成,导致 RecyclerView 无法恢复到之前滚动位置。...从  1.2.0-alpha02 版本开始,Jetpack RecyclerView 提供了一个新 API,可以让 Adapter  在数据加载完成之前阻塞布局行为 ,从而避免丢失滚动位置信息。...接下来我们会介绍如何使用这个新 API,以及它工作原理。 恢复至原有滚动位置 有好几种方法可以用来恢复 RecyclerView 至正确滚动位置,您可能已经在实际项目中用到了这些方法。...如果根据您项目实际情况无法采用这种方法,那也可以使用其他方法,只是要么比较复杂 (比如避免在 RecyclerView 中设置 Adapter,但这样又有可能导致像 header 等 item 显示问题

1.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

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

引言 最近,在做公司一个design折叠效果时候遇到个问题,就是我们本身app方法数太多了,dex分包技术还没搞定。不得不尽量缩减一些不必要包、类。...当我们引入RecyclerView时候,恰好是压死骆驼最后一根稻草,故不得不采用其他方案来代替RecyclerView CollapsingToolbarLayout实现折叠效果。...true,不过这里兼容性还是存在问题,特别是android 4.4版本折叠布局透明statusbar,不知道改为有没更好方式。...,其他CollapsingToolbarLayout子view做相应改变如(视差)或pin(不变)。...题外话:直接使用RecyclerView折叠动画不平滑问题 在stackoverflow上找到如下解决方案,大致是由于google官方留Behavior坑。

3.3K50

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

下面是AppBarLayout结合RecyclerView实现工具栏向上滚动效果截图: ?...RecyclerView是其中一个特工,它可用来替代ListViewGridView;替代ScrollView则另有其人,它便是嵌套滚动视图NestedScrollView,在Android5.0之后...NestedScrollView,还有哪些控件可以触发AppBarLayout滚动行为呢?...1、AppBarLayout滚动依赖于主体视图滚动,与主体视图相对应,可将AppBarLayout称作头部视图。既然一个页面分为头部主体两部分,那么就存在谁先滚谁后滚问题了。...同时声明scrollenterAlways,滚动效果如下图所示: ? 后面三个标志都与CollapsingToolbarLayout有关,得配合该控件才能观察细节差异。

1.9K40

AppBarLayoutCollapsingToolbarLayout闲谈

了解 CollapsingToolbarLayout主要是提供一个可折叠Toolbar容器,对容器中不同View设置layout_collapseMode折叠模式,来达到不同折叠效果。...其实就是向下滚动时Scrolling ViewChild View之间滚动优先级问题。...对比scrollscroll | enterAlways设置,发生向下滚动事件时,前者优先滚动Scrolling View,后者优先滚动Child View,当优先滚动一方已经全部滚进屏幕之后,另一方才开始滚动...这里涉及到Child View高度最小高度,向下滚动时,Child View先向下滚动最小高度值,然后Scrolling View开始滚动,到达边界时,Child View再向下滚动,直至显示完全。...在内容滚动时,CollapsingToolbarLayoutView(比如ImageView)也可以同时滚动,实现视差滚动效果,通常layout_collapseParallaxMultiplier

1.6K30

Android--AppBarLayout、CollapsingToolbarLayout组合使用

通常AppBarLayoutCollapsingToolbarLayout是一起使用,也就是CoordinatorLayout、AppBarLayout、CollapsingToolbarLayout...、Toolbar常常是组合应用,AppBarLayout能够赋予Toolbar显示消失功能,而CollapsingToolbarLayout能够赋予Toolbar伸缩功能 AppBarLayout...CollapsingToolbarLayout使用方法也比较固定,AppBarLayout包裹CollapsingToolbarLayout,由于需要伸缩Toolbar,所以它使用app:layout_scrollFlags...,可是设定app:layout_collapseMode属性,其中parallax表示随着滑动控件滚动,最终该控件会消失,pin则表示,最终不会消失,废话不多说,来看下xml <?...,否则没有效果 另外需要注意是,Toolbartitle属性并不会起作用,我们需要在代码中调用CollapsingToolbarLayoutsetTitle方法才能设置标题 private CollapsingToolbarLayout

3.3K30

SwipeRefreshLayoutRecyclerView使用问题

SwipeRefreshLayout是官方提供下拉刷新控件,在使用过程碰到一些小问题大家分享下....下面的代码只能监听下拉手势所引发事件 mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener...,但不会触发上面的监听 //这段代码如果写在onCreate方法中是无效,因为SwipeRefreshLayout控件还未完全加载,可以使用延迟加载方法使用下面的代码 mSwipeRefreshLayout.setRefreshing...也不会有下拉刷新视图 RecyclerView有一点想要分享是,如果你没有把它Adapter关联,他会跳过加载,不会实际去初始化这个控件,虽然在布局代码写着 这个和我上面提到SwipeRefreshLayout...提到那个问题放在一起使用,就会产生你下拉不会触发事件问题.

1.7K40

浅谈Android RecyclerView UI滚动控件示例

还有就是只能够纵向滚动,如果要想实现横向移动,用 ListView 是做不到RecyclerView 可以说是一个增强版 ListView 。...它不仅实现了 ListView 同样效果,而且还优化了 ListView 存在各种不足。...RecyclerView 现在可是官方推荐使用滚动控件哦O(∩_∩)O~ 1 基本用法 RecyclerView 也是新增控件,所以必须先在项目的 build.gradle 中添加相应依赖库才能使用...然后在 ViewHolder 构造函数中传入一个 View 参数,它是 RecyclerView 子项最外层布局,所以我们可以通过它来取得布局中 ImageView TextView 实例。...recyclerView 示例 我们使用了 recyclerView 创建出了 ListView 效果,而且代码逻辑更清晰咯。 2 横向滚动 现在让我们把这些猫变为 “横向滚动” 吧。

84210

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

其中, scroll表示CollapsingToolbarLayout会随着水果内容详情滚动一起滚动, exitUntilCollapsed表示当CollapsingToolbarLayout随着滚动完成折叠之后就保留在界面上...这里在CollapsingToolbarLayout中定义了一个ImageView一个Toolbar,也即这个高级版标题栏是由普通标题栏加上图片组合而成。...由于CoordinatorLayout本身已经可以响应滚动事件了, 因此我们在它内部就需要使用NestedScrollView或RecyclerView这样可以响应滚动事件布局。...另外,通过 app:layout_behavior属性指定一个布局行为,这之前 第四弹 在RecyclerView用法是一模一样。...然后在FruitAcuvityTheme中将状态栏颜色指定成透明色, 由于values-v21目录是只有Android5.0及以上系统才会去读取, 因此这么声明是没有问题

2.2K40

高仿支付宝9.9.2版本生活模块界面来讲解CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout

"就是这句CoordinatorLayout控件互动实现滑动,总结就是CoordinatorLayout控件app:layout_behavior来进行互动,进而CoordinatorLayout子控件...2.AppBarLayout 其次就是AppBarLayout,去除官方解释,简单来说就是它可以让你定制当某个可滚动View滚动手势发生变化时,其内部子View实现何种动作。...enterAlways:值设为enterAlwaysView,当ScrollView往下滚动时,该View会直接往下滚动。而不用考虑ScrollView是否在滚动。...这是layout_srcollFlags里可以设置各个属性解释,考虑文章重点是模仿支付宝所以没有篇幅每个属性都给个效果图,所以各属性你们有空还要自己试一试,这样子才能掌握更好。...3.CollapsingToolbarLayout 是用来对Toolbar进行再次包装ViewGroup,主要是用于实现折叠App Bar效果。

1.1K20

使用CoordinatorLayout打造各种炫酷效果

会 跟着 滚动 事件响应, layout_scrollFlags=“snap”时候 在Scroll滑动事件结束以前 ,如果这个View部分可见,那么这个View会停在最接近当前View位置。...其实相对于前 一个例子,只是把 摆放RecyclerView 位置替换成ViewPager而已,为了有页面导航器效果,再使用 TabLayout而已,而TabLayout 在我们滑动时候最终会停靠在...结构图如图片所示,先说明CollapsingToolbarLayout变化 CollapsingToolbarLayout里面 包含ImageView ToolBar,ImageViewapp:...- 对于AppBarLayout,我们主要 讲解了这个属性app:layout_scrollFlags,设置不同 属性我们可以在滚动时候显示不同 效果 - 对于CollapsingToolbarLayout...,我们主要讲解了app:layout_collapseMode这个属性,设置不同值,我们可以让其子View呈现不同 炫酷效果,如parallaxpin等 CoordinatorLayout相关用法还有很多

4.9K10

一种新 HeaderView + RecyclerView 实现方式

在 GitHub 开源了一种新 Header View + RecyclerView 实现方式,使用 CoordinatorLayout 把 header 抽离出 RecyclerView,并做到上下滑联动...说明: 可以使用 SmoothAppBarLayout 这个第三方库,它是一个提供顺滑滚动 AppBarLayout 补足库,这一个层次必须置于 RecyclerView 代码下面,也就是界面上是在...RecyclerView 上层,这样AppBarLayout 包裹 header views 才能接收到点击事件(其实根本原因是,RV 对于 Padding 部分也会拦截手势所以不得不这么做)。...如果想要列表上滑时候,状态栏跟随着滑动显示出阴影效果,可以在 FrameLayout 外再包裹一层 android.support.design.widget.CollapsingToolbarLayout...由于受制于微信公众平台内容字数限制,无法展现源码,源码具体内容,欢迎大家访问drakeet博客。

59160
领券