判断RecyclerView是否滑到顶部或底部

recycleView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        //newState分 0,1,2三个状态,2是滚动状态,0是停止
        super.onScrollStateChanged(recyclerView, newState);
        //-1代表顶部,返回true表示没到顶,还可以滑
        //1代表底部,返回true表示没到底部,还可以滑
        boolean b = recyclerView.canScrollVertically(1); 
        boolean b1 = recyclerView.canScrollVertically(-1);
    }

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

    }
});
如果你想要实现 RecyclerView 顶部底部的圆角效果,并且在滑动 item 到顶部时不能出现直角,可以使用一个自定义的 ItemDecoration 来实现。 具体步骤如下: 1. 定义一个自定义的 ItemDecoration,重写 getItemOffsets() 方法,设置 RecyclerView 的 padding 值: ``` class CustomItemDecoration(private val margin: Int, private val radius: Int) : RecyclerView.ItemDecoration() { override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { super.getItemOffsets(outRect, view, parent, state) val pos = parent.getChildAdapterPosition(view) if (pos == 0) { outRect.top = radius } outRect.left = margin outRect.right = margin outRect.bottom = margin if (pos == state.itemCount - 1) { outRect.bottom = radius } } } ``` 2. 在 RecyclerView 的布局文件中,设置 RecyclerView 的背景为一个带有圆角的 ShapeDrawable,并且设置 RecyclerView 的 padding 为圆角大小: ``` <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/rounded_background" android:paddingTop="20dp" android:paddingBottom="20dp" /> ``` 3. 最后,在 RecyclerView 中设置自定义的 ItemDecoration: ``` val itemDecoration = CustomItemDecoration( resources.getDimensionPixelSize(R.dimen.margin), resources.getDimensionPixelSize(R.dimen.radius) ) recyclerView.addItemDecoration(itemDecoration) ``` 其中,margin 是 RecyclerView item 之间的间距,radius 是 RecyclerView 顶部底部的圆角大小。 通过这种方式,你可以实现 RecyclerView 顶部底部的圆角效果,并且在滑动 item 到顶部时不会出现直角。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值