SmartRefreshLayout 数据量多的时候,material 下拉刷新会很难拉下来

f2uvfpb9  于 5个月前  发布在  其他
关注(0)|答案(3)|浏览(43)

数据量多的时候,也就是recycleview很长的时候,material 的下拉刷新会很难拉下来,只能拉下来一点点,而且无法触发刷新

7y4bm7vi

7y4bm7vi1#

NestedScrollView 嵌套 SmartRefreshLayout时才会有这种情况

92dk7w1h

92dk7w1h2#

NestedScrollView 嵌套 SmartRefreshLayout时才会有这种情况

后续,我改成了把整个NestedScrollView包裹在了SmartRefreshLayout里面,不过这样一来,刷新头会从NestedScrollView顶部出现,而不是从RecycleView顶部出现了。

uqzxnwby

uqzxnwby3#

数据量多的时候,也就是recycleview很长的时候,material 的下拉刷新会很难拉下来,只能拉下来一点点,而且无法触发刷新
onMeasure()方法结尾加上以下内容

if (useAutoChangeMaxDrag) {
            if (getHeight() != 0 && allHeight == 0) {
                allHeight = getHeight();
            } else if (allHeight != 0 && getHeight() != 0) {
                this.mHeaderMaxDragRate = getHeight() / (allHeight * .6F);
            }
        }
protected float MAX_DRAG_RATE = 10;//mHeaderMaxDragRate < 10    -->"10"用 MAX_DRAG_RATE替换
private boolean useAutoChangeMaxDrag = false;
private int allHeight = 0;

/**
 * 为了解决外层嵌套 NestedScrollView 时,RecyclerView内容过多而导致的下拉刷新困难
 * 没有测试其他情况的兼容冲突,所以需要手动调用 removeMaxDragRateLimit()以避免对其他已有正常逻辑的影响
 */
public void removeMaxDragRateLimit() {
    this.useAutoChangeMaxDrag = true;
    this.MAX_DRAG_RATE = 100F;
}

相关问题