android下拉刷新和listview冲突解决方案
2016-12-10 09:51
246 查看
相关文章:
《下拉刷新?我看好MaterialRefreshLayout!》
常见的下拉刷新都是带有一些自定义的listview、gridview和webview,我们导包直接用就行了,但是为什么他们要自定义一些常用的控件呢?直接在外边套用不行吗?类似于SwipeLayout,他是在ViewGroup的层面上动刀,可以嵌套任何的组件的,那么我们先去看一个效果你就知道了。
效果图:
我之前用的都是封装库,没有怎么碰到过这种情况,但是自己写了一个下拉刷新之后,碰到这种问题,不用思考,一看就是下拉刷新和listview滑动冲突了,你是否明白了我在文章开头说的那个问题了?
问题分析:
出现这个问题,首先考虑的就是因为下拉刷新中嵌套的listview,根据View的分发机制可以知道,内部的view的时间最终是返回到外层的ViewGroup中进行处理得,说白了,如果不作处理的话,下拉刷新这个ViewGroup的会代替listview处理触摸事件。
问题解决:
在ListView中监听滑动是否在头部,如果不在头部拦截触摸机制ListView自己处理行为,如果滑到了头部则放行触摸机制放行给外层下拉刷新来处理行为。
代码:
自定义ListView拦截,在onInterceptTouchEvent中拦截
在你的xml文件中使用这个自定义的listview,然后执行代码,看效果:
处理成功,其他的也是一样的道理。
《下拉刷新?我看好MaterialRefreshLayout!》
常见的下拉刷新都是带有一些自定义的listview、gridview和webview,我们导包直接用就行了,但是为什么他们要自定义一些常用的控件呢?直接在外边套用不行吗?类似于SwipeLayout,他是在ViewGroup的层面上动刀,可以嵌套任何的组件的,那么我们先去看一个效果你就知道了。
效果图:
我之前用的都是封装库,没有怎么碰到过这种情况,但是自己写了一个下拉刷新之后,碰到这种问题,不用思考,一看就是下拉刷新和listview滑动冲突了,你是否明白了我在文章开头说的那个问题了?
问题分析:
出现这个问题,首先考虑的就是因为下拉刷新中嵌套的listview,根据View的分发机制可以知道,内部的view的时间最终是返回到外层的ViewGroup中进行处理得,说白了,如果不作处理的话,下拉刷新这个ViewGroup的会代替listview处理触摸事件。
问题解决:
在ListView中监听滑动是否在头部,如果不在头部拦截触摸机制ListView自己处理行为,如果滑到了头部则放行触摸机制放行给外层下拉刷新来处理行为。
代码:
自定义ListView拦截,在onInterceptTouchEvent中拦截
/** * 自定义RefreshListView */ public class RefreshListView 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); } }
在你的xml文件中使用这个自定义的listview,然后执行代码,看效果:
处理成功,其他的也是一样的道理。
相关文章推荐
- Android ScrollView与ListView,GridView共存冲突解决方案
- Android ScrollView与ListView,GridView共存冲突解决方案
- Android ListView下拉刷新出现卡顿现象,解决方案
- Android下拉刷新与轮播图滑动冲突解决方案
- Android ScrollView与ListView,GridView共存冲突解决方案
- android下拉刷新和listview冲突 - listview不能下拉到头部
- android之listview滑动与下拉刷新冲突 : listview未到顶部便出现下拉刷新
- Android ListView下拉刷新出现卡顿现象,解决方案
- 【Android】viewpager嵌套4个带侧滑的listview 事件冲突处理解决方案,可动态设置是否可以侧滑
- Android ScrollView与ListView,GridView共存冲突解决方案
- Android 之Scrview与ListView ,GridView冲突的两种解决方案
- Android ScrollView与ListView,GridView共存冲突解决方案
- Android下拉刷新与轮播图冲突解决方案
- Android ScrollView与ListView,GridView共存冲突解决方案
- android listview 中button 冲突问题,不同情况不同解决方案
- android scrollview listview 滚动冲突解决方案
- Android 在ScorllView中ListView和GridView冲突解决方案
- Android 下拉刷新与 ListView冲突问题
- android ListView嵌套ViewPage 并且包含下拉刷新,滑动viewpage冲突的修复办法
- Android ListView下拉刷新出现卡顿现象,解决方案