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

恢复 RecyclerView 的滚动位置

您可能在开发过程中遇到过这种情况,在 Activity/Fragment 被重新创建后,RecyclerView 丢失了它之前保有的滚动位置信息。...通常这种情况发生的原因是由于异步加载 Adapter 数据,且数据在 RecyclerView 需要进行布局的时候尚未加载完成,导致 RecyclerView 无法恢复到之前的滚动位置。...从  1.2.0-alpha02 版本开始,Jetpack RecyclerView 提供了一个新的 API,可以让 Adapter  在数据加载完成之前阻塞布局行为 ,从而避免丢失滚动位置信息。...接下来我们会介绍如何使用这个新的 API,以及它的工作原理。 恢复至原有滚动位置 有好几种方法可以用来恢复 RecyclerView 至正确的滚动位置,您可能已经在实际项目中用到了这些方法。...它有三个选项: ALLOW — 默认状态,会在下一次布局完成时立即恢复 RecyclerView 状态; PREVENT_WHEN_EMPTY — 仅当 adapter 不为空 (即 adapter.getItemCount

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

    vue返回上一页面时回到原先滚动的位置

    项目结束,测试时发现在首页商品列表中,向上滑动几页后点击进入详情,从详情页面返回商品列表时,页面回到了最顶部,测试不通过说是用户体验不好,要求从哪里点击进去返回该页面时回到原先的滚动页面。...component: index, meta: { keepAlive: true } }, 这样在index.vue中,mounted方发只走一次,在浏览器上实现了返回原来滚动位置的目的...但是在手机上测试,发现没用, 解决手机上实现目的的方法: //在页面离开时记录滚动位置 beforeRouteLeave (to, from, next) { this.scrollTop =...document.documentElement.scrollTop || document.body.scrollTop next() }, //进入该页面时,用之前保存的滚动位置赋值 beforeRouteEnter

    3.1K20

    利用本地存储,记录滚动条的位置

    2、功能分析 这个功能的实现并不是很难,当页面滚动时记录页面滚动条的位置并保存到本地存储里面,当你再次打开页面的时候读取本地存储里面的值来设置页面滚动条的位置。具体我们来分析一下。...分析: 1、监听页面滚动条的状态(是否滚动) 2、滚动时获取页面滚动条的位置 3、滚动条的位置保存到本地存储里面 4、页面每次加载的时候获取本地存储里面的值 5、获取到的值来设置页面滚动条的位置 3、知识要点...1、监听页面滚动条的状态(是否滚动) 浏览器监测到滚动条发生滚动时,就会触发scroll事件。...2、滚动时获取页面滚动条的位置 代码中解决了获取滚动条位置的兼容问题。...// 滚动时获取页面滚动条的位置 var sTop = document.documentElement.scrollTop || document.body.scrollTop

    2.7K70

    读取文件时的大坑(python的scanpy库)

    基于《python的scanpy库读取几种常见的格式的单细胞数据文件汇总》的文章,不知道有没有细心的小伙伴发现,在使用scanpy读取单细胞数据txt文件或者其他格式文件时,得到的AnnData数据对象有点奇怪...注意,上面的data_1是我们的从GEO数据库下载并使用read_text()进行读取得到的Anndata数据对象,而data_2是读取scanpy的内置数据后的正常Anndata数据对象,两者不要混淆...在使用scanpy的read_text()进行读取txt文件时,要注意了哦!...注意:如果你使用的scanpy的其他的读取文件函数进行读取不同格式的文件,一定要小心了哦,一定要查看读取后Anndata的obs是不是存储细胞信息,var是不是存储基因信息!..."填坑" 如果你也使用scanpy的read_text()这个函数来读取txt文件,或使用scanpy别的读文件函数读取别的格式文件,读取后的AnnData也出现上述的这种情况,别慌!

    87710

    iOS开发中解决UIScrollView滚动时NSTimer失效的问题

    我曾经遇到过这样的问题,但需求是即使滑动scrollView,NSTimer也不能失效,于是就好好地研究了下这个问题。最终发现是NSTimer选择的一个模式的问题。...,并且选择NSDefaultRunLoopMode这个默认的模式。...在选择这个默认的模式之后,如果我们不与UI进行交互那么NSTimer是有效的,如果我们与UI进行交互那么主线程runloop就会转到UITrackingRunLoopMode模式下,不能处理定时器,从而定时器失效...让定时器不失效的方式有两种:1.改变runloop的模式(NSRunLoopCommonModes),无论用户是否与UI进行交互主线程的runloop都能处理定时器。...2.开启一个新的线程,让定时器在新的线程中进行定义,这时定时器就会被子线程中的runloop处理。

    1.4K20

    【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )

    行列属性读取方法 UIPickerView 行列属性读取方法 :  -- "numberOfComponents" 方法 : 获取 UIPickerView 中的可选的列表的选项个数; -- "numberOfRowsInComponent...return [array objectAtIndex:row]; } /* UIPickerViewDelegate 委托方法, 当选中某个选项时 激发的方法 row 参数 : 选中选项所在的列的索引...老虎机 示例代码 (1) 相关 API 简介 相关 API 简介 :  -- 音频文件使用流程 :  //音频文件 位置 NSURL * gameSoundUrl = [[NSBundle...id)sender { //设置按钮不可点击 self.button.enabled = NO; //音频文件 位置 NSURL * gameSoundUrl...; -- "webViewDidStartLoad" 方法 : 开始加载网页时激发的方法; -- "webViewDidFinishLoad" 方法 : 结束加载网页回调的方法; -- "webViewDidFailLoadWithError

    4.9K40

    iOS流布局UICollectionView系列六——将布局从平面应用到空间

    系统的pickerView效果如下: ?...而我们这次要讨论的布局则不同,pickerView会随着我们手指的拖动而进行滚动,因此UICollectionView中的每一个item的布局是在不断变化的,所以这次,我们采用动态配置的方式,在layoutAttributesForItemAtIndexPath...至于layoutAttributesForItemAtIndexPath方法,它也是UICollectionViewLayout类中的方法,用于我们自定义时进行重写,至于为什么动态布局要在这里面配置item...三、让滚轮滑动起来             通过上面的努力,我们已经静态布局出了一个类似pickerView的滚轮,现在我们再来添加滑动滚动的效果         首先,我们需要给collectionView...,上面的逻辑刚好可以无缝对接,但是会有新的问题,一开始运行,滚轮就是出现在最后一个item的位置,而不是第一个,并且有些相关的地方,我们也需要一些适配: 在viewController中: //一开始将

    1.4K20

    使用 fartscroll.js 让你的网页在滚动时放屁

    放屁绝对不是一个很高雅的行为,但是如果你比较喜欢恶搞,或者在愚人节,或者是一些比较特殊的网页设计中,可以通过 fartscroll.js 这个插件让你的网页在滚动的过程中 放屁。...直接打开 fatscroll.js 的官方页面(http://theonion.github.io/fartscroll.js/),滚动一下,你就可以听到了放屁声音了,你滚动的距离和速度不同,放屁的声音也不同...使用方法也很简单,先下载插件包,解压出来之后,在网页中引入 fartscroll.min.js 这个文件,然后配置下面的参数等,启用这个插件: // 在文档中滚动 400 像素就放屁 $(document...).fartscroll(); // 文档中每滚动 800 像素就放屁 $(document).fartscroll(800); // 网页中没滚动 100 像素就放屁 $("body").fartscroll...(100); // 很多很多的屁 $("body").fartscroll(5); 仅供娱乐和恶搞哈,相信应该没有太多人喜欢在访问你网页的时候,听到你网页在放屁哈哈。

    93320

    React中将一直增加消息的滚动框保持在当前浏览的位置

    在做业务开发时,经常会遇到这样的需求:某某某购买了该商品,某某某抽奖获得了什么,这类消息用来吸引用户。...通常需要一个滚动框来展示所有消息,且每次的新消息都会展示在滚框的顶部,但同时这个消息滚动框还是可以拖动鼠标浏览的。...那么问题来了,当用户拖动鼠标正在浏览某一条消息时,突然新来一条消息就把用户正在看的消息给挤下去了,这种感觉是不是特别不爽?...解决思路如下:在新消息来了更新页面前,获取当前页面的高度A,更新完成后,用新的页面高度B减去之前的页面高度A得出值C,C的值即为滚动条因为新增了消息自动滚动了多少,然后在更新完成后的页面上获取scrollTop...此时新消息来了,就可以保证我们当前浏览的消息相对整个滚动框仍然保持以前的位置。 其实很简单,但是讲起来有点绕,不知道我有没有说清楚,没有听明白的放学别走来找我。  以下是代码实现,方便大家抄作业。

    78440
    领券