解决scrollview嵌套及listview嵌套viewpager的滑动冲突问题的方法,特来回馈网友了。
解决scrollview嵌套问题的代码:
//这个imageHorizontalScrollView是嵌套在 垂直滑动的scrollview中的
imageHorizontalScrollView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//通知父控件不要拦截这个事件,这个imageHorizontalScrollView的父控件就是外层垂直滑动的scrollview
imageHorizontalScrollView.getParent().requestDisallowInterceptTouchEvent(true);
return false;
}
});
亲自测试,效果很好,一点也没有卡顿的效果了。
解决listview嵌套viewpager滑动冲突问题的代码,与上面的基本类似:
//这个slideview是嵌套在listview中的viewpager控件
slideViewPager.setOnTouchListener(new OnTouchListener() {
//就这一行代码
slideViewPager.getParent().requestDisallowInterceptTouchEvent(true);
//下面的代码是解决viewpager里面装的比如说图片绑定了监听器后,无法滑动的问题,解决方法就是不要给图片帮监听器,自己在这里面设置监听
if(event.getAction()==MotionEvent.ACTION_DOWN){
//记录按下时的坐标
cx=event.getX();
cy=event.getY();
}else if(event.getAction()==MotionEvent.ACTION_UP){
//记录手指离开屏幕时的坐标
x=event.getX();
y=event.getY();
//如果移动距离小于30,则认为点击了当前图片
if(Math.abs(cx-x)<30){
//在这里启动要做的事件
Intent intent=new Intent(getActivity(), SlideContentActivity.class);
//使用currentPager来记录当前点击了哪张图片
intent.putExtra("item",viewPagerInfos.get(currentPager));
startActivity(intent);
return true;
}
return false;
}
});
亲自测试有效,不用重写控件,貌似对于其他类似的滑动冲突事件都有效果,感觉很好使,与大家分享一下。
2014 10 25
zhyi