listview所带来的滑动冲突
来源:互联网 发布:网络电视台广告语 编辑:程序博客网 时间:2024/05/21 14:53
From:http://blog.csdn.net/singwhatiwanna/article/details/8863232
在android中,有时候会遇到子控件和父控件都要滑动的情况,尤其是当子控件为listview的时候。这种情况较常见,典型的launcher,每个屏幕上放上listview就会出现这种情况。
有两点需要注意:
- 一般来说,view的onTouchEvent返回true,即消耗点击事件,viewgroup的onInterceptTouchEvent返回false,即不拦截点击事件,这一点从android源码中可以看出来。但是listview的父类AbsListView重写了onInterceptTouchEvent,返回了true,注意这里不是一定返回true,但是我觉得这一点可以先忽略。
- onTouchEvent和onInterceptTouchEvent的调用顺序。点击事件从父控件向子控件传递,如果父控件不拦截,则交由子控件拦截,如果父控件拦截了,则交由父控件的onTouchEvent处理,如果最终处理点击事件的控件的onTouchEvent返回了false,则将会直接调用其父控件的onTouchEvent,如此向上类推。
其实解决方法也很简单:重写父控件的onInterceptTouchEvent函数,在move的时候根据需要返回true,比如左右滑动返回true,其他情况均返回false。这样,当左右滑动的时候,由于onInterceptTouchEvent返回了true,父控件就能处理,其他情况,事件将传递到listview中,listview自身可以处理上下滑动。
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev)
- {
- Log.d(TAG, "onInterceptTouchEvent-slop:"+mTouchSlop);
- final int action = ev.getAction();
- if ((action == MotionEvent.ACTION_MOVE) && (mTouchState != TOUCH_STATE_REST))
- {
- return true;
- }
- final float x = ev.getX();
- final float y = ev.getY();
- switch (action)
- {
- case MotionEvent.ACTION_MOVE:
- final int xDiff = (int)Math.abs(mLastMotionX-x);
- if (xDiff>mTouchSlop)
- {
- mTouchState = TOUCH_STATE_SCROLLING;
- }
- break;
- case MotionEvent.ACTION_DOWN:
- mLastMotionX = x;
- mLastMotionY = y;
- mTouchState = mScroller.isFinished()? TOUCH_STATE_REST : TOUCH_STATE_SCROLLING;
- break;
- case MotionEvent.ACTION_CANCEL:
- case MotionEvent.ACTION_UP:
- mTouchState = TOUCH_STATE_REST;
- break;
- }
- return mTouchState != TOUCH_STATE_REST;
- }
0 0
- listview所带来的滑动冲突
- listview所带来的滑动冲突
- listview所带来的滑动冲突
- listview所带来的滑动冲突
- ListView的滑动冲突
- Android App中ViewPager所带来的滑动冲突问题解决方法
- fragment加载webView与ViewPager所带来的滑动冲突问题解决方法
- listview的滑动冲突解决
- 处理listview的滑动冲突
- ListView与ViewPager的滑动冲突
- Android:SlidingMenu+ListView+ViewPager 的滑动冲突
- SwipeRefreshLayout 与ListView滑动冲突的解决
- ListView与ScrollView的滑动冲突解决方法
- Listview 嵌套 Viewpager 滑动冲突的解决
- ScrollView和ListView的滑动冲突解决
- 解决ListView与ScrollView的滑动冲突
- ScrollView嵌套ListView滑动冲突的解决方案
- ListView嵌套webView滑动冲突的解决
- Android源码分析-Activity的启动过程
- 什么都没做的一天
- HashMap和Hashtable的区别
- 又是到了选择的时候
- 数据结构 《18》----RMQ 与 LCA 的等价性 (一)
- listview所带来的滑动冲突
- php写的一个简单路由控制类
- POJ 2187 Beauty Contest
- box2d 如何学习?
- DP LIS(最长上升子序列) POJ 2533 POJ 1836 POJ 2138 HDU 1069
- 一些小的知识点(c++)
- 80端口被屏蔽解决方法
- 微信公众平台搭建与开发(二)开发模式的搭建和关键词回复
- 集成电路IC-原装,散新和翻新的区别