android下拉刷新和listview冲突 - listview不能下拉到头部
来源:互联网 发布:小学语文网络课程 编辑:程序博客网 时间:2024/05/19 19:33
说明:
当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); | 第二个是使用后的
1 0
- android下拉刷新和listview冲突 - listview不能下拉到头部
- android下拉刷新和listview冲突解决方案
- Android 下拉刷新与 ListView冲突问题
- Android ListView下拉刷新
- android Listview下拉刷新
- Android ListView下拉刷新
- Android-ListView 下拉刷新
- android listview下拉刷新!
- android listview下拉刷新
- Android ListView下拉刷新
- Android ListView 下拉刷新
- Android ListView下拉刷新
- android ListView下拉刷新
- Android 固定头部的ListView以及下拉刷新(附源码)
- android之listview滑动与下拉刷新冲突 : listview未到顶部便出现下拉刷新
- ListView嵌套viewpager 头部图片轮换,listview 进行下拉刷新
- android listview 下拉刷新功能
- Android Listview下拉刷新数据
- Android 基于Message的进程间通信 Messenger完全解析
- 八数码问题 bfs
- OKHttp详解
- 分数类中的运算符重载(3)(4)
- TopCoder SRM 637 Div2 C
- android下拉刷新和listview冲突 - listview不能下拉到头部
- 在Java中如何遍历Map对象
- Vitamio的使用
- Eclipse中Tomcat启动时间过长导致启动失败
- iOS开发---常用公用方法
- ofbiz 集团财务软件
- 去掉网页中错误页面提示
- Linux进程管理之task_struct
- qt中的委托-简单的应用