viewPager和listview嵌套冲突
来源:互联网 发布:dns 一个域名多个ip 编辑:程序博客网 时间:2024/05/17 08:16
viewPager和listView嵌套使用时,viewPager是作为容器,父布局,而listView是写在viewPager中的,那么对于点击或者滑动事件发生时,会调用dispatchTouch来进行事件的传递,此时重写父控件的onInterceptTouchEvent函数,在move的时候根据需要返回true,比如左右滑动返回true,其他情况均返回false。这样,当左右滑动的时候,由于onInterceptTouchEvent返回了true,父控件就能处理,其他情况,事件将传递到listview中,listview自身可以处理上下滑动。
public class ViewPagerCompat extends ViewPager {
//mViewTouchMode表示ViewPager是否全权控制滑动事件,默认为false,即不控制
private boolean mViewTouchMode = false;
public ViewPagerCompat(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setViewTouchMode(boolean b) {
if (b && !isFakeDragging()) {
//全权控制滑动事件
beginFakeDrag();
} else if (!b && isFakeDragging()) {
//终止控制滑动事件
endFakeDrag();
}
mViewTouchMode = b;
}
/**
* 在mViewTouchMode为true的时候,ViewPager不拦截点击事件,点击事件将由子View处理
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (mViewTouchMode) {
return false;
}
return super.onInterceptTouchEvent(event);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
try {
return super.onTouchEvent(ev);
} catch (Exception e) {
return false;
}
}
/**
* 在mViewTouchMode为true或者滑动方向不是左右的时候,ViewPager将放弃控制点击事件,
* 这样做有利于在ViewPager中加入ListView等可以滑动的控件,否则两者之间的滑动将会有冲突
*/
@Override
public boolean arrowScroll(int direction) {
if (mViewTouchMode) return false;
if (direction != FOCUS_LEFT && direction != FOCUS_RIGHT) return false;
return super.arrowScroll(direction);
}
}
http://www.oschina.net/question/565065_138841
- viewPager和listview嵌套冲突
- ListView嵌套ViewPager事件冲突
- 防止viewpager和子view滑动冲突(ScrollView嵌套webview,Listview嵌套Listview 滑动事件冲突)
- 滑动冲突(ScrollView嵌套ViewPager,ViewPager再嵌套ListView)
- listview嵌套viewpager 滑动冲突问题
- listview嵌套viewpager 滑动冲突问题
- ListView中嵌套ViewPager事件冲突问题
- Android listview嵌套viewpager滑动冲突问题
- Listview 嵌套 Viewpager 滑动冲突的解决
- Android Listview嵌套viewpager 滑动冲突解决
- ListView中嵌套ViewPager滑动事件冲突
- ListView嵌套ViewPager事件冲突问题
- Listview嵌套Viewpager滑动冲突解决方案
- Viewpager嵌套ScrollView和ListView嵌套ScrollView引起的冲突问题
- 解决listview嵌套viewpager使viewpager的高度异常冲突
- scrollview和viewpager嵌套冲突的问题
- listview 与 viewpager嵌套使用滑动冲突问题
- 当ListView中嵌套ViewPager滑动冲突问题
- friend class & function
- MATLAB画图-legend,box用法
- mybatis一对多配置问题
- Loadrunner集合点Rendezvous知识
- 称砝码
- viewPager和listview嵌套冲突
- flask之行(flask环境安装)
- Linux内核-menuconfig和kconfig和.config的关系
- poj 1700 Crossing River
- NSFileHandle的使用
- hdu5375 dp+递推
- 自适应内容的TextView
- 【bzoj2440】[中山市选2011]完全平方数 莫比乌斯反演+容斥原理
- HTML5 localStorage用法