如何给RecyclerView加上滚动条--现在就教你

本文介绍如何为RecyclerView添加垂直滚动条,通过扩展RecyclerView并监听滚动事件,动态计算并绘制滚动条。虽然目前仅实现垂直方向,但作者计划未来可能实现横向滚动条。示例代码简单易懂,适合需要自定义滚动条效果的开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时隔许久,我又要更博了,含蓄的话不多说了,今天我们的主题是这个RecyclerView。至于为什么要加个scrollBar?因为我的业务需求是需要一个实现成这样的,

效果图:(可能看起来比较粗糙,但功能实现了,你可以自定义修改嘛~哈哈哈)

可能我比较老派,我的app 中list的垂直布局还是喜欢用listView ,使用起来简单(可能博主我之前有个通用的adapter不舍得放弃吧,虽然RecyclerView也有通用的adapter,但总感觉显示简单的列表要多写几行代码,有点麻烦,哈哈哈,可能我就想偷懒吧)

但既然今天的是这个RecyclerView那么我们就开始详细的说明下吧~废话不多说切入正题。

注意:我这个View暂时只实现了垂直的View的ScrollBar的滚动,暂时没有横向实现,

未来可能我会拓展,敬请期待吧(大佬可能觉得太简单,勿喷,求教,谢谢)

先说下我的思路:

       一、初始思路(想一个新玩意总得有个过程和弯路嘛),可能跟你想法一样哦

  1.   用一个LinearLayout 布局套住 RecyclerView 和一个自定义的View  
  2. 自定义一个可以上下滚动的scrollBar 
  3. 滚动的ScrollBar绑定RecyclerView的滚动事件
  4. Ok

       二、现在的实现的思路 (我想了下如果用上面的方案实现的话就,必须写个xml文件,自定义一个ViewGroup,别人使用起来会很麻烦,当然你把他当成类库来用也很简单,而我就不想写xml)

  1. HobbyRecyclerView继承RecyclerView, 扩展这个功能
  2. 在HobbyRecyclerView 中先让子view的宽度缩小 ,留出给scrollBar的宽度
  3. 在HobbyRecyclerView中画一个ScrollBar ,这个bar的高度 = (view的可见高度 / view的所有子View的高度)* view可见高度 。
  4. 给HobbyRecyclerView加上滚动事件监听,监听滚动距离dy*(view的可见高度 / view的所有子View的高度)=  scrollbar 的滚动距离
  5. 给scrollBar加上监听,监听拖动距离转化为    RecyclerView的滚动距离   =   (scrollBar的拖动距离/scrollBar可滚动的区域高度(这里的区域高度等于View的高度)) * view的所有子View的高度 
  6. 测试ok

思路也大概说了,那么就来看代码的实现吧。

/**
 * @author mdm
 * @Description  HobbyRecyclerView
 * @Version 1.0
 */
public class HobbyRecyclerView extends RecyclerView {

    private RectF mRangeRectf;
    private Paint mRangPaint;
    private int showMode = 1;
    //滚动条宽高
    private float scrollBarHeight;
    private float scrollBarWidth;
    //柱间隙
    private float scrollWidthSpace ;
    //滚动条宽度的等分比例
    private 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值