从API9开始,在ViewGroup上有android:filterTouchesWhenObscured属性和相应的setFilterTouchesWhenObscured方法。例如,当一个视图设置了onClickListener,而另一个视图模糊了该视图(例如,覆盖面板、toast或其他任何东西),那么触摸将不会传递给被遮挡的视图--在我的例子中,onClick将不会被触发。
然而,这在API level 7中是不可用的-对于我的项目,要求是Android 2.1及更高版本,这意味着我必须使用level 7。
有什么简单的方法可以绕过它吗?在级别7中,这个属性本质上是硬编码为FALSE的。结果,我得到了这个奇怪的行为:在一个视图上,我有一个按钮。按下后,另一个视图将滑入到位,并用按钮覆盖视图。在这个视图中,有它自己的按钮,但它与下面按钮的位置不匹配。因此,如果用户触摸下面按钮所在位置的覆盖面板,该按钮的onClick将再次触发-这不是我想要/需要的。
在这种情况下,我可以做些什么来防止onClick触发?谢谢。
发布于 2012-06-18 18:36:57
事实证明,没有办法做到这一点。在API级别9之前的Android中,有两种方法可以解决这个问题:
click事件并不对其执行任何操作)-这就是我在我的例子中处理它的方式。有趣的是,在安卓的早期版本中,接收click事件的模糊视图的行为被报告为一个错误,但这个错误被关闭了,这表明这不是一个错误,而是一个预期的功能(我不明白为什么有人会想要这个功能)。我认为android:filterTouchesWhenObscured属性是在第9级中添加的,目的是安抚所有不满意的开发人员:)
https://stackoverflow.com/questions/11054654
复制相似问题