Android4.2 scrollview 手势bug问题解决
最近发现了 Android4.2 scrollview 手势bug,先引用下别人测试过程,测试用机Nexus7,android版本4.2.2
当scrollview中放入的children(也可以是child的children)上设有click和longclick事件的时候,滑动无效
当手放在child以外的属于scrollview的空白地方滑动,滑动有效,并且之后在children上面滑动也有效。
猜测:一开始child的事件处理将事件拦截了,或者说外层容器,但是之后在scrollview上面滑动时激活了
我都语无伦次了。。。。
测试用例可以用DodoWaterFall的瀑布流,
1. scrollview中加入几个child, scrollview.width=match_parent. child.layout_margin=30
2. child.setOnClickListener 或 child.setOnLongClickListener
3. 先用手指按住child滑动:无效
4. 手指按住scrollview边框空白处滑动:成功
5. 成功之后,手指再放到child上滑动:成功
不知道有多少朋友发现过这个问题。 android 4.2.2 bug 手势bug Android scrollview android4.2.2 --------------------编程问答-------------------- 解决办法,在自己定义的scrollview中添加方法:
@Override--------------------编程问答-------------------- 解决办法2,不推荐,这种方式会使得你的scrollview在滑动的时候有偏移,体验不佳
public boolean onInterceptTouchEvent(MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_MOVE&&Integer.parseInt(Build.VERSION.SDK) > 16) {
if(getScrollY() == 0){
System.out.println("ontouch2");
return true;
}
}
return super.onInterceptTouchEvent(e);
}
--------------------编程问答-------------------- 没人留个言······ --------------------编程问答-------------------- 还需要在初始化的时候添加scrollTo(0, 1); --------------------编程问答-------------------- 好东西啊,谢谢分享,以后也许会碰到~
// @Override
// public boolean dispatchTouchEvent(MotionEvent ev) {
// waterfall_scroll.onTouchEvent(ev);
// return super.dispatchTouchEvent(ev);
// }
补充:移动开发 , Android