一直认为ScrollView很方便也很简单,OnTouch很方便也很简单,所以一直“简单”的用,知道有一天需要将二者结合使用时发现这“两家”还有点“水火不容”。
二者的主要矛盾是谁处理“触摸事件”。
比如下面的简单情形中:
(由于用手机编写,所以只能用文字进行描述)在scrollview中包含一个relativalayout,在新建布局中包含一个textview。现状:直接在textview上使用ontouch,结果scrollview能用,ontouch不能用。
解决方法:在ontouch的DOWN事件中,先禁止scrollview的touch事件,然后在UP事件中允许scrollview的touch事件。
在DOWN中添加 getParent().requestDisallowInterceptTouchEvent(true);//屏蔽父控件拦截onTouch事件
在UP中添加 getParent().requestDisallowInterceptTouchEvent(false);//取消屏蔽父控件拦截onTouch事件
这样就可以在scrollview中使用ontouch了。
本文介绍在Android开发中如何解决ScrollView与自定义View的OnTouch事件冲突问题。通过在DOWN事件中禁止ScrollView处理touch事件,并在UP事件中恢复其处理能力,实现了ScrollView与自定义View的触摸事件共存。

298

被折叠的 条评论
为什么被折叠?



