scwang90 / SmartRefreshLayout

🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框架,支持越界回弹、越界拖动,具有极强的扩展性,集成了几十种炫酷的Header和 Footer。
https://segmentfault.com/a/1190000010066071
Apache License 2.0
24.79k stars 4.93k forks source link

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

Open fox0830 opened 1 year ago

fox0830 commented 1 year ago

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

fox0830 commented 1 year ago

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

fox0830 commented 1 year ago

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

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

raoqian156 commented 11 months ago

数据量多的时候,也就是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;
}