android下拉刷新和listview冲突 - listview不能下拉到头部
2016-06-07 19:48
375 查看
说明:
当listview嵌套在下拉刷新中,在中部滑动ListView时候会触发下拉刷新,这样不能回到ListView的头部。解决办法:
在ListView中监听滑动是否在头部,如果不在头部拦截触摸机制ListView自己处理行为,如果滑到了头部则放行触摸机制放行给外层下拉刷新来处理行为。两个事件触摸传递机制供参考:
Android 触摸事件传递机制android事件拦截处理机制详解
关键触摸拦截代码:
getParent().requestDisallowInterceptTouchEvent(true);//拦截触摸 getParent().requestDisallowInterceptTouchEvent(false);//放行给上层,不拦截触摸
详细代码;
布局文件:
<com.baofoo.mobile.wallet.common.view.pullable.PullToRefreshLayoutView android:id="@+id/rv_pull" android:layout_width="match_parent" android:layout_height="wrap_content"> <com.baofoo.pulltorefresh.activity.PullableListView android:id="@+id/content_view" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:divider="@color/finance_divider"/> </com.baofoo.mobile.wallet.common.view.pullable.PullToRefreshLayoutView>
ListView文件:
PullableListView自定义ListView拦截,在onInterceptTouchEvent中拦截/** * 和下拉刷新配合的listview */ public class PullListView extends ListView { public PullListView(Context context) { super(context); } public PullListView(Context context, AttributeSet attrs) { super(context, attrs); } public PullListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (getFirstVisiblePosition() == 0 && getChildAt(0).getTop() == 0) {//到头部了 getParent().requestDisallowInterceptTouchEvent(false);//放行触摸 } else {//没有到头部 getParent().requestDisallowInterceptTouchEvent(true);//拦截触摸 } return super.onInterceptTouchEvent(ev); } }
解析:
但是listVIew必须是向上拉倒第一个item的时候才能执行下拉刷新(顺序处理002),所以要用到代码getParent().requestDisallowInterceptTouchEvent(true);当为true时候,代表listview拦截成功,必须listView中的onTouchEvent执行完毕后设为false放行,下拉刷新才能执行
运行图:
第一个是没有使用getParent().requestDisallowInterceptTouchEvent(true); | 第二个是使用后的相关文章推荐
- Android开源框架——依赖注入Dagger
- android stdio设置主题
- Android 基于Message的进程间通信 Messenger完全解析
- Android 热补丁动态修复框架小结
- android 蓝牙模块学习
- android ImageLoader 混淆加载drawable出现黑色图片的解决方案
- 在Android开发中使用MVP模式
- android 简单实现电话的监听
- 屏幕适配之百分比方案详解
- 神奇的Android Studio Template
- Android系统中Debug的一些小技巧
- Android学习记录(二十一)-crash保护处理
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- listview中EditText,焦点问题
- Android Studio导入Vitamio多媒体开发框架 1
- Android 布局之TableLayout
- Android 加载 SO 库 UnsatisfiedLinkError 错误的原因及解决方案
- 如何分析、定位Android Native Crash
- Android 消息机制学习
- Android布局中实现圆角边框