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

RecyclerView smoothScroll定位在中心。安卓

基础概念

RecyclerView 是 Android 中用于显示大量数据集的组件,它通过重用视图来提高性能。smoothScroll 方法用于平滑地滚动 RecyclerView 到指定位置。

相关优势

  • 性能优化:通过视图重用减少内存消耗和提高渲染速度。
  • 灵活性:支持多种布局管理器(如线性布局、网格布局等)。
  • 平滑滚动:提供平滑滚动效果,提升用户体验。

类型

  • LinearLayoutManager:线性布局管理器,支持垂直和水平滚动。
  • GridLayoutManager:网格布局管理器,支持多列布局。
  • StaggeredGridLayoutManager:交错网格布局管理器,支持不同高度或宽度的项。

应用场景

  • 列表展示:如新闻列表、商品列表等。
  • 网格布局:如图片墙、应用图标等。
  • 交错布局:如瀑布流图片展示。

问题:RecyclerView smoothScroll定位在中心

在某些情况下,你可能希望 RecyclerView 平滑滚动到某个项并使其居中显示。以下是实现这一功能的方法:

原因

默认情况下,RecyclerViewsmoothScroll 方法只会滚动到指定项的位置,而不会使其居中。

解决方法

可以通过计算目标项的位置和 RecyclerView 的尺寸,手动调整滚动位置,使目标项居中。

代码语言:txt
复制
public void smoothScrollToCenter(RecyclerView recyclerView, int position) {
    RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
    if (layoutManager == null) {
        return;
    }

    View view = layoutManager.findViewByPosition(position);
    if (view == null) {
        return;
    }

    int viewWidth = view.getWidth();
    int viewHeight = view.getHeight();
    int recyclerViewWidth = recyclerView.getWidth();
    int recyclerViewHeight = recyclerView.getHeight();

    int offset = (recyclerViewWidth - viewWidth) / 2;
    int targetPos = layoutManager.getPosition(view);

    recyclerView.smoothScrollToPosition(targetPos);
    recyclerView.post(() -> {
        layoutManager.scrollToPositionWithOffset(targetPos, offset);
    });
}

参考链接

通过上述方法,你可以实现 RecyclerView 平滑滚动到指定项并使其居中显示。希望这对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

安卓易学,爬坑不易——腾讯老司机的RecyclerView局部刷新爬坑之路

WeTest导读 安卓开发者都知道,RecyclerView比ListView要灵活的多,但不可否认的里面的坑也同样埋了不少人。下面让我们看看腾讯开发工程师用实例讲解自己踩坑时的解决方案和心路历程。...这个是RecyclerView自带的更新动画效果导致的? 这个是因为图片加载框架(glide 的 animte)的动画效果导致的?...getView中(RecyclerView中是onBindViewHolder)加载图片的时候,设置一个tag,当发现这个imageView的tag和之前的tag一致时就不加载 二、带着思考,就去尝试吧...2、对于第二种说法,我参考了这里 http://stackoverflow.com/questions/29331075/recyclerview-blinking-after-notifydatasetchanged...还是去翻一翻RecyclerView的api吧,我注意到了这个api: ? ?

78520
  • 学习笔记 | Android Studio安卓开发入门经验总结 干货

    前言 最近完成了移动编程课程的学习,加上其它安卓开发项目的经历,感觉收获颇为丰富。故在此总结整理安卓开发中比较常见的一些问题,技巧和指南。...1.开发环境 Android Studio是谷歌基于IntelliJ IDEA社区版开发的,面向安卓开发的免费集成开发环境。其方便快捷的开发调试和可视化UI编辑可以令安卓开发事半功倍。...接着,Minimum SDK指的是本项目所支持的最小安卓SDK,点击“Help me choose”会出现如下界面帮助选择合适的安卓最小SDK版本: 图1 安卓API版本选择帮助界面 其中CUMULATIVE...DISTRIBUTION表示如果支持该安卓版本以上设备,则预估能支持安卓设备占所有安卓设备的百分比。...可见Minimum SDK越小所能支持设备越多,但没有必要一味追求支持更多设备,这需要根据一定的市场调查与经验来决定。本项目选择支持默认的安卓6.0及以上。

    2.5K60

    scroll-behavior & scrollIntoView 的使用,以及解决ios手机不兼容的问题

    兼容性问题,下图是浏览器兼容性 经本人测试,对于移动端,安卓的兼容性还是很好的,ios手机上的浏览器几乎都不支持平滑滚动效果,定位效果非常生硬,效果如下图所示: 如果对兼容性要求不太高,那么该css...三、smoothscroll-polyfill插件 安装 # npm npm install smoothscroll-polyfill --save # yarn yarn add smoothscroll-polyfill...复制代码 引入 在你使用了scrollIntoView的地方引入该插件. import smoothscroll from 'smoothscroll-polyfill' 复制代码 使用 在你的实现定位的方法里写上以下代码... import smoothscroll from 'smoothscroll-polyfill'; export default { methods: { moveToPosition...(ele) { smoothscroll.polyfill(); this.

    3.4K10

    安卓天气预报app(二)——适配器、每小时数据展示

    ✅简易的安卓天气app(一)——解析Json数据、数据类封装 简易的安卓天气app(二)——适配器、每小时数据展示 ✅简易的安卓天气app(三)——城市管理、数据库操作 ✅简易的安卓天气app(四)—...适配器adatper 项目结构 界面设计 既然用到了RecyclerView,那么就离不开adapter,RecyclerView负责准备一个框框,adapter负责把什么数据传到框内,顾名思义适配器...详细讲解C一下,第一篇就是,讲的非常全面,附加地址Android RecyclerView最全使用详解 布局效果 需要添加的RecyclerView <LinearLayout android...10dp" android:layout_marginRight="10dp" android:layout_height="100dp"> recyclerview.widget.RecyclerView...rlvHourWeather;并findByView注册拿到之后就可以添加适配器了,想要哪个小页面传到这个RecyclerView中,, 每小时天气小界面: <?

    1.1K80

    【翻译】Kotlin 1.1 新版本同样适合安卓开发者

    二、正文 标题:Kotlin 1.1 新版本同样适合安卓开发者 2017年4月5号由 Roman Belov 发布 这是一篇邀请文,由 Antonio Leiva 编写,一位安卓工程师、培训导师,也是...所有的新特性仍然适用于 Java 6 ,同时作为扩展而适用于安卓开发者。更重要的是,今天我就要把这些都展示给您,让您知道在开发安卓程序过程中是多么的爽快。...其他一些对于安卓开发者来说很酷的事情 在这个版本中还有很多其他的改进,但是我想重点提出几个关于针对安卓开发的功能。...Kotlin 带给安卓开发者的益处毋庸置疑,你完全可以从今天开始就使用 Kotlin 来开发安卓软件。...这边文章发布在类目:安卓,访客文章和新闻标签下,订阅他的永久地址。

    1.1K60

    安卓天气预报app(四)——搜索城市、完善页面

    ✅简易的安卓天气app(一)——解析Json数据、数据类封装 ✅简易的安卓天气app(二)——适配器、每小时数据展示 ✅简易的安卓天气app(三)——城市管理、数据库操作 简易的安卓天气app(四)—...CityAdapter适配器: 前面文章提到过,略过过了就,, 指路==>适配器写法: 简易的安卓天气app(二)——适配器、每小时数据展示 根据目录适配器HourWeatherAdapter索引...后续会更新,适配器也是安卓提供的ArrayAdapter,传入的是全国所有市的String[]数组。...AutoCompleteTextView) findViewById(R.id.edit_query); 接着就是设置一个ArrayAdapter适配器,里面设置样式为android.R.layout.simple_list_item_1安卓提供的样式...,都显示在一个页面还得滑动屏幕一个个找; 那么,二级RecyclerView不妨考虑一下:先显示全部省,点击省时,弹出市; 亦或者Spinner、两个RecyclerView联动,等等方法;==(源码已给

    1.9K51

    FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势

    ​喊了多年的互联网寒冬,今年的寒风格外凛冽,还在坚守安卓开发的朋友着实不容易。因为能转行的早就转了,能转岗的也早就转了,那么安卓程序员比较迷茫的就是,我该学什么安卓技术才好呢?...还是直接扔了安卓再去搞别的技术吗?下面探讨下安卓程序员还能在哪些方面进阶修炼,主要有以下三个方向。一、纵向钻研谷歌爸爸推出的最新技术谷歌就是安卓的爹,只要谷歌不倒,安卓开发就不会倒。...二、横向拓展安卓开发的新功能新应用除了谷歌爸爸推出的组件库,还有其他专业领域的第三方库,能够实现与众不同的新功能。...理由:以上技能涉及计算机科学的专业领域知识,具备一定的技术门槛。...三、打开思路迈向Android+N的新天地除了常见的App应用开发之外,安卓与其他行业结合还能产生更多的就业岗位。

    13610

    安卓天气预报app(三)——城市管理、数据库操作

    ✅简易的安卓天气app(一)——解析Json数据、数据类封装 ✅简易的安卓天气app(二)——适配器、每小时数据展示 简易的安卓天气app(三)——城市管理、数据库操作 ✅简易的安卓天气app(四)—...(源码见页尾✨) 本项目用到的天气api接口天气api 详细操作内容见第一篇-->简易的安卓天气app(一)——解析Json数据<-- 此接口当我们默认不拼接参数,直接访问会得到当前位置的温度Json...所以接下来就是进行安卓SQLite数据库的一些操作,把当前位置信息保存到数据库中(城市名,城市温度,更新时间) 待实现效果: 数据库成功插入当前位置数据信息(之前测试插入过几条的测试对照用数据):...layout_marginBottom="5dp" android:alpha="0.6" android:background="@color/white" /> recyclerview.widget.RecyclerView... 适配器就是决定在此城市管理页面的RecyclerView中展示哪个页面,跟之前一样,前几篇文章都有篇幅概括,基本的一些操作就是, 添加一个构造方法

    1.5K30

    重拾安卓:自定义View之表格封装实现

    今天开始更新【重拾安卓】系列文章。 因业务需要又要做一个 Android 原生的项目,记录下时隔几年之后再开发安卓的那些事。...讲的不会太基础,基本上是自定义View封装,复杂功能的实现等等,有需要的小伙伴可以关注~ 安卓对表格的支持不是太友好,前端很快能实现的简单表格,安卓写的话要费很大精力。...但考虑各种因素还是决定自己撸一个表格,一是后端返回的数据结构还没定,二是需求并不是太复杂,只是个简单表格,三是找找手感~ 一、需求分析及实现原理 最终效果: 实现目标: 行数不固定,超出父容器可以上下滚动...每行又包含一个内层 RecyclerView,每行的每个单元格是内层 RecyclerView 的 item。...RecyclerView,外层 RecyclerView 用来展示行,内层 RecyclerView 用来展示列。

    85600

    初、中级Android开发人员如何提高自身能力?

    是不是软件行业的人员真的接近饱和,再加上2018年的互联网公司裁员的大潮流,弄得很多人觉得软件行业不行了,但从各大企业招聘的技术人员的数量并没有太大的下降,而且对于中高级的软件工程师的需求量,不但没有下降而且还在加剧,有些特殊的岗位在刚毕业的时候就已经能拿到非常可观的薪水了...对于中级的安卓技术开发人员如何提升自己的能力是一个非常大的话题,现在就结合自身的一些经历给出一些个人建议。 ?...对于安卓api的定制以及内部如何实现需要有一定的了解了,不能只是去使用,需要灵活巧妙的来使用了,在安卓刚开始流行阶段只需要随便培训几个月就能非常轻松找份工资待遇还不错的工作,但如果放在现在几乎是不可能的事情了...,需要对安卓内部的工作原理有些了解,毕竟行业的门槛已经提升了许多,现在企业对应用的要求又小又快速的模式,所以从技能需求也不像以前那么粗糙了。...但对于安卓应用开发这块还会一直在,所以对于技术人员的要求也会增加不少,所以要提升自己的能力从java基础的牢固程度,以及安卓api内部实现原理,以及java虚拟机的工作原理都需要慢慢涉猎了。

    81130

    物联网项目 | LeanCloud+树莓派+安卓实现住宅环境异常告警系统

    完成后的树莓派和传感器 目录 前言 目录 物料清单 软件架构 室内环境条件监控模块 手机监视APP模块 硬件模块使用 DHT11温湿度传感器 MQ-2烟雾传感器 云后端接入与使用 为安卓用户端接入LeanCloud...数据及消息推送SDK LeanCloud安卓SDK初始化 LeanCloud安卓消息推送服务初始化 LeanCloud安卓消息推送服务接入完成测试 为用户端监测硬件 —— 树莓派接入LeanCloud...App详细设计 参考资料 物料清单 配件名称 数量 功能 Raspberry Pi 4B 1 主机 闪迪Micro SD 16GB 1 为树莓派烧录系统 树莓派专用电源适配器及电源线 1 为树莓派供电 安卓手机...App详细设计 为了减少项目复杂度,本项目采用最简单的安卓开发模式:MVC。一个MainActivity和对应界面即可。...数据的展示采用RecyclerView + BaseRecyclerViewadapter的模式。

    1.4K21

    2-VII-RecyclerView事件

    [1].本文接上文:RecyclerView基本使用 [2].RecyclerView把很多事都交给了我们,就连item的点击事件都没有 [3].在adapter中加载布局的时候,可以为item...添加事件 [4].没有点击效果,还要自己添加点击的选择器 [5].RecyclerView增删条目以及条目运动效果 ---- 一、点击事件 方式1.修改:FirstRvAdapter#onCreateViewHolder...rv点击1.gif ---- 二、背景选择器 添加点击效果:可以自定义选择器 为item的背景添加:安卓自带波纹样式的选择器 //有边界 android:background="?...增加与删除.gif 本文由张风捷特烈原创,转载请注明 更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http

    62540

    WeTest功能优化第2期:云真机智能投屏,调试告别鼠标

    仅需在本地手机安装WeTest助手(安卓版),就能够同步体验。...操作指南: ① 将鼠标放置“在手机上操作云真机”(下图红框)处打开,获得二维码,扫描二维码即可下载WeTest助手APP(安卓版) ② 打开WeTest助手,点击“手机控制器”(下图蓝框),再次扫描二维码...我们发现该应用容易在安卓系统6.0和分辨率1080 x 1920的机型上出现 “进程退出”这一兼容性问题;容易在安卓系统8.0的机型上出现“UI异常”兼容性问题。 如此智能的小帮手,不要忽视了。 ?...就Android主题而言,想必有着“Pie”美称的最新系统Android 9.0一定万众瞩目。 更令人激动的消息是,Android 9.0机型也同步上线WeTest了!...WeTest展位在大会展厅安卓区域(2F), 另外安卓9专区是限时免费开放的,现场更有《腾讯WeTest Android 9 兼容性测试报告》可供领取,想要了解更多测试详情,我们谷歌开发者大会见!

    1.6K40
    领券