判断RecyclerView是否可以滚动

RecyclerView判断是否可以滚动。

网上的例子我都试过了,不行。
一、layoutManager.findLastCompletelyVisibleItemPosition() < adapter.getItemCount()-1
二、computeHorizontalScrollRange() > getWidth() || computeVerticalScrollRange() > getHeight();
三、canScrollVertically(0 / 1 / -1)

基于Monster 组和GPT的调写:
用canScrollVertically()或canScrollHorizontally()方法,这两个方法都是RecyclerView的方法,可以检查是否可以在垂直或水平方向上滚动。如果返回值为true,则表示可以滚动,否则不能滚动。

示例代码:

// 判断RecyclerView是否可以垂直滚动
boolean isVerticalScrollable = recyclerView.canScrollVertically(1) || recyclerView.canScrollVertically(-1);
if (isVerticalScrollable) {
    // 可以滚动
} else {
    // 不能滚动
}

// 判断RecyclerView是否可以水平滚动
boolean isHorizontalScrollable = recyclerView.canScrollHorizontally(1) || recyclerView.canScrollHorizontally(-1);
if (isHorizontalScrollable) {
    // 可以滚动
} else {
    // 不能滚动
}


如果RecyclerView的LayoutManager不支持滚动(例如,它是一个GridLayoutManager,但是设置了固定的列数和行数),则无论如何都会返回false。

基于new Bing的回答:
可以使用以下方法判断RecyclerView是否可以滚动:

1、使用canScrollVertically()方法来判断RecyclerView是否可以垂直滚动。

RecyclerView recyclerView = findViewById(R.id.recyclerView);
if(recyclerView.canScrollVertically(1) || recyclerView.canScrollVertically(-1)){
    // RecyclerView可以垂直滚动
} else {
    // RecyclerView不能垂直滚动
}

2、使用canScrollHorizontally()方法来判断RecyclerView是否可以水平滚动。

RecyclerView recyclerView = findViewById(R.id.recyclerView);
if(recyclerView.canScrollHorizontally(1) || recyclerView.canScrollHorizontally(-1)){
    // RecyclerView可以水平滚动
} else {
    // RecyclerView不能水平滚动
}

可以滚动时返回true,不可滚动时返回false。

以下内容部分参考ChatGPT模型:


可以使用canScrollVertically方法来判断RecyclerView是否可以垂直滚动,示例代码如下:

RecyclerView recyclerView = findViewById(R.id.recyclerView);
boolean canScrollVertically = recyclerView.canScrollVertically(1) || recyclerView.canScrollVertically(-1);
if (canScrollVertically) {
    // 可以滚动
} else {
    // 不能滚动
}

其中canScrollVertically(1)表示向上滚动,canScrollVertically(-1)表示向下滚动,如果两者都不能滚动,则RecyclerView不能滚动。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
判断 RecyclerView 是否可以滚动可以通过以下两种方法:

方法一:使用 canScrollVertically() 或 canScrollHorizontally() 方法判断 RecyclerView 是否可以在垂直或水平方向上滚动。

方法二:使用 computeVerticalScrollRange() 或 computeHorizontalScrollRange() 方法计算 RecyclerView 可以滚动的范围,如果这个范围大于 RecyclerView 的宽度或高度,则说明 RecyclerView 可以滚动。

这里给出两种方法的详细代码实现:

方法一:

// 判断 RecyclerView 是否可以垂直滚动
boolean isVerticalScrollable = recyclerView.canScrollVertically(1) || recyclerView.canScrollVertically(-1);
// 判断 RecyclerView 是否可以水平滚动
boolean isHorizontalScrollable = recyclerView.canScrollHorizontally(1) || recyclerView.canScrollHorizontally(-1);

方法二:

// 判断 RecyclerView 是否可以垂直滚动
boolean isVerticalScrollable = recyclerView.computeVerticalScrollRange() > recyclerView.getHeight();
// 判断 RecyclerView 是否可以水平滚动
boolean isHorizontalScrollable = recyclerView.computeHorizontalScrollRange() > recyclerView.getWidth();

需要注意的是,RecyclerView 中需要设置 LayoutManager 才能获取到正确的滚动范围。否则在调用 computeVerticalScrollRange() 或 computeHorizontalScrollRange() 方法时会得到 0。

同时,以上方法只适用于 RecyclerView 横向或纵向滚动的情况。对于两个方向都可以滚动的情况,需要做一些额外的判断。
如果我的回答解决了您的问题,请采纳!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^