当前位置: 首页 > news >正文

解决RecyclerView在调用smoothScrollToPosition后最后一个item底部超出屏幕的问题

要解决RecyclerView在调用smoothScrollToPosition后最后一个item底部超出屏幕的问题,可以使用自定义的LinearSmoothScroller,使其底部对齐屏幕。步骤如下:

  1. 创建自定义的SmoothScroller类
    继承LinearSmoothScroller并重写getVerticalSnapPreference方法,指定对齐方式为底部(SNAP_TO_END)。

public class BottomSmoothScroller extends LinearSmoothScroller {

    public BottomSmoothScroller(Context context) {
        super(context);
    }

    @Override
    protected int getVerticalSnapPreference() {
        return LinearSmoothScroller.SNAP_TO_END; // 对齐到底部
    }

    @Override
    public PointF computeScrollVectorForPosition(int targetPosition) {
        LinearLayoutManager layoutManager = (LinearLayoutManager) getLayoutManager();
        if (layoutManager == null) {
            return null;
        }
        return layoutManager.computeScrollVectorForPosition(targetPosition);
    }
}
 
  1. 使用自定义Scroller滚动到指定位置
    在需要滚动到最后一个item时,使用自定义的BottomSmoothScroller

int lastPosition = getItemCount() - 1;
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
BottomSmoothScroller smoothScroller = new BottomSmoothScroller(recyclerView.getContext());
smoothScroller.setTargetPosition(lastPosition);
layoutManager.startSmoothScroll(smoothScroller);

解释

  • SNAP_TO_END:确保目标item的底部与RecyclerView的底部对齐,使整个item可见。

  • computeScrollVectorForPosition:根据布局方向计算滚动向量,支持垂直或水平布局。

此方法通过调整滚动对齐方式,确保最后一个item完全显示,避免底部超出屏幕。

http://www.dtcms.com/a/124437.html

相关文章:

  • Word / WPS 页面顶部标题 段前间距 失效 / 不起作用 / 不显示,标题紧贴页眉 问题及解决
  • 数据库主从复制学习笔记
  • Android 中支持旧版 API 的方法(API 30)
  • 深入解析计算机操作系统的底层架构与核心模块功能
  • SQL 查询中使用 IN 导致性能问题的解决方法
  • vue3开发基础流程(前21)
  • 2025年认证杯C题超详细解题思路
  • 基于Flask的勒索病毒应急响应平台架构设计与实践
  • uniApp开发微信小程序-连接蓝牙连接打印机上岸!
  • Java抽象类与抽象方法详解
  • WSA(Windows 安卓子系统)过检测教程
  • ECMAScript 6 新特性(二)
  • 蓝桥杯python组考前准备
  • 代码随想录第14天:(二叉树)
  • CasaOS香橙派安装HomeAssistant智能家居系统并实现远程管理家中智能设备
  • 微服务简述
  • Backtrader从0到1——第一个回测策略
  • Gerapy二次开发:用户管理专栏主页面开发
  • 算法训练之动态规划(二)
  • 深度解析强化学习:原理、算法与实战
  • 【LunarVim】解决which-key 自定义键位注册不成功问题
  • adb|scrcpy的安装和配置方法|手机投屏电脑|手机声音投电脑|adb连接模拟器或手机
  • IDEA、Webstorm使用账号密码登录Gitlab
  • 145.WEB渗透测试-信息收集-小程序、app(16)
  • CExercise_09_1结构体和枚举_1定义一个Date结构体,包含年、月、日数据项。编写一个函数,计算两个日期之间的天数差
  • 前端笔记-ECMAScript语法概览
  • 在Linux系统命令行如何使用deepseek官方API调用AI大模型?
  • python:all列表
  • 平时工作忙,报考学习PMP要怎么规划?需要多长时间?
  • CentOS Stream release 9安装 MySQL(一)