PtrFrameLayout 上下拉控件刷新空间 里面的item嵌套一个横向滑动的RecyclerView,我重写了RecyclerView但是事件还是有冲突。请各位朋友帮助,有偿解决此问题 Q 416760980
解决方案 »
- android怎样设置界面颜色
- 来讨论一下Android里代码如何操作背景数据
- Android 如何不让ContentObserver过期
- 求”Error generating final archive: Debug certificate expired on ...错误的解决方法
- 求助,关于动态添加删除TableRow
- 各位大侠 android环境变量安装问题
- 在Android应用程序中,了解XML文件操作的高手请进,能能解决的话分全给他
- 出错了 着急。。。
- 从assets文件夹中获取图片,遇到崩溃的问题
- 在线求,当点击了某个按钮时,旁边的文本输入框才允许输入文字
- 怎样获取应用包中应用的版本信息?
- 应用在模拟器里面跑不起来
* 手动设置是否可用下拉刷新
*/
private boolean canScrollUp = true; /**
* 手动设置是否可用下拉刷新
* @param canScrollUp true则可下拉刷新,false则不可下拉刷新
*/
public void setCanScrollUp(boolean canScrollUp) {
this.canScrollUp = canScrollUp;
} @Override
public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
return canScrollUp && PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header);
}
}在RecyclerView的事件中进行判断,如果横向滑动大于竖向滑动时这设置canScrollUp为false,部分代码 private static final float minXlength = 20;
private float startX, startY;
/** 是锁定状态 */
private boolean isLockStatus = false;
/** 是否可下拉(纵向下拉距离超过横向滑动距离且纵向下拉超过一定距离才判断为下拉状态,否则判定位滑动状态) */
private boolean disableScroll = false;
@Override
public void dispatchTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
startY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
if (!isLockStatus) {
float xGap = Math.abs(event.getX() - startX);
float yGap = Math.abs(event.getY() - startY);
if (xGap > yGap && xGap > minXlength){
disableScroll = false;
isLockStatus = true;
} else if (yGap > xGap && yGap >minXlength) {
disableScroll = true;
isLockStatus = true;
}
}
final TouchPtrHandler refreshLayout = touchPtrFrameLayout.get();
if (refreshLayout != null) {
refreshLayout.setCanScrollUp(disableScroll);
}
if (disableScroll && getParent() != null) {
getParent().requestDisallowInterceptTouchEvent(true);
}
break;
case MotionEvent.ACTION_CANCEL:
default:
isLockStatus = false;
disableScroll = false;
final TouchPtrHandler cancelRefreshLayout = touchPtrFrameLayout.get();
if (cancelRefreshLayout != null) cancelRefreshLayout.setCanScrollUp(true);
break;
}
}