场景1:
ScrollView中局部嵌套ListView一个或者多个
遇到问题:手触摸在ListView上时,出现了ScrollView滑动而ListView并不会滑动。
解决方案:(假设ScrollView的id为 sv ListView的id为lv)
lv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { sv.requestDisallowInterceptTouchEvent(true); return false; } });
场景2:
在刚刚的ListView中添加FlowLayout(自定义)或者也可以是其他的自适应布局,这个时候内部Item的点击事件也会和滑动时间相冲突,但是和场景1不同的是,场景1是ScrollView为父级,而场景2中LIstView是父级,其实原理是一样的。
问题描述:
当我们的手在绑定点击事件的Item上滑动的时候并没有激活ListView的滑动事件,该事件并没有被消费。(假设点击事件绑定控件的id是x)
解决方案:
x.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.getParent().requestDisallowInterceptTouchEvent(true); return false; } });
总结:原理都是一样的,解决事件冲突requestDisallowInterceptTouchEvent(true);,只是看如何调用到相对于的控件。分析清楚哪一个事件和哪一个事件相互冲突。