Comments (2)
我也碰到这个问题,原因是刷新耗时比较短,在上拉动作还没结束的时候就完成了,此时的上拉动作触发了下一次刷新.
查看 MaterialRefreshLayout.java 的代码发现, 加载更多的回调方法 onRefreshLoadMore()
是在 onInterceptTouchEvent()
里的 MotionEvent.ACTION_MOVE
分支里调用的, 因此只要还在滑动,就有可能触发加载更多.
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (isRefreshing) return true;
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mTouchY = ev.getY();
mCurrentY = mTouchY;
break;
case MotionEvent.ACTION_MOVE:
float currentY = ev.getY();
float dy = currentY - mTouchY;
if (dy > 0 && !canChildScrollUp()) {
if (mMaterialHeaderView != null) {
mMaterialHeaderView.setVisibility(View.VISIBLE);
mMaterialHeaderView.onBegin(this);
} else if (mSunLayout != null) {
mSunLayout.setVisibility(View.VISIBLE);
mSunLayout.onBegin(this);
}
return true;
} else if (dy < 0 && !canChildScrollDown() && isLoadMore) {
if (mMaterialFooterView != null && !isLoadMoreing) {
soveLoadMoreLogic();
}
return super.onInterceptTouchEvent(ev);
}
break;
}
return super.onInterceptTouchEvent(ev);
}
解决: 将事件派发的逻辑放到 MotionEvent.ACTION_UP
分支里, 亲测可行.
本人对代码的其它逻辑不是很了解, 所以也不能确定这样不会造成其它问题, 希望作者看到可以解决一下这个问题, 谢谢啦.
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (isRefreshing) return true;
float currentY = ev.getY();
float dy = currentY - mTouchY;
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mTouchY = ev.getY();
mCurrentY = mTouchY;
break;
case MotionEvent.ACTION_UP:
if (dy < 0 && !canChildScrollDown() && isLoadMore) {
if (mMaterialFooterView != null && !isLoadMoreing) {
soveLoadMoreLogic();
}
return super.onInterceptTouchEvent(ev);
}
break;
case MotionEvent.ACTION_MOVE:
if (dy > 0 && !canChildScrollUp()) {
if (mMaterialHeaderView != null) {
mMaterialHeaderView.setVisibility(View.VISIBLE);
mMaterialHeaderView.onBegin(this);
} else if (mSunLayout != null) {
mSunLayout.setVisibility(View.VISIBLE);
mSunLayout.onBegin(this);
}
return true;
}
break;
}
return super.onInterceptTouchEvent(ev);
}
from android-materialrefreshlayout.
我也遇到了,列表一碰就触发加载更多 :#67
from android-materialrefreshlayout.
Related Issues (20)
- 打包时出现异常,Expected a color resource id (R.color.) but received an RGB integer HOT 3
- 上拉加载更多太容易触发了 HOT 4
- 支持自定义底部加载更多的布局吗?
- Attribute "progress_text_visibility" already defined with incompatible format.
- 第一个子布局必须要是滑动布局么,好局限啊
- 自动刷新refreshLayout.autoRefresh()问题 HOT 3
- 这个项目停止维护了?
- 建议把 dy 的触摸距离判断改成与 TouchSlop 比较而不是与0比较 HOT 5
- NullPointerException HOT 1
- Not able to scroll list while pull-to-refresh loading more data
- 进度条 红色转完以后 第二圈是绿色的时候,绿色会立马闪一下,才转绿色的那个 HOT 1
- Overlay transparent background
- refreshLayout.autoRefresh() Problem HOT 1
- How do I set the color of the progress icon? (The circular loading icon)
- 混淆都是自己写的吗?
- 一页加载两条数据怎么不触发加载更多的
- 刷新过程中,列表无法点击怎么解决?
- 1.3.0版本与这里的library库代码都不一样..... HOT 1
- 带波浪形状下拉刷新滑动到一半控件隐藏不了了
- isLoadMore(Load and Refresh From Bottom) does not show wave or curve fx
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from android-materialrefreshlayout.