android的类似功能:filterTouchesWhenObscured用于低于9级的API
从API级别9开始,在android的类似功能:filterTouchesWhenObscured用于低于9级的API,android,android-2.1-eclair,obscured-view,Android,Android 2.1 Eclair,Obscured View,从API级别9开始,在视图组上有android:filterTouchesWhenObscured属性和相应的setFilterTouchesWhenObscured方法。例如,当一个视图设置了onClickListener且另一个视图遮挡了该视图(例如覆盖面板、烤面包片或其他任何视图),则触摸将不会传递到遮挡视图-在我的示例中,onClick将不会被触发 然而,这在API级别7中是不可用的——对于我的项目来说,要求是Android 2.1及以上,这意味着我必须使用级别7 有没有简单的办法?在级
视图组上有android:filterTouchesWhenObscured
属性和相应的setFilterTouchesWhenObscured
方法。例如,当一个视图设置了onClickListener
且另一个视图遮挡了该视图(例如覆盖面板、烤面包片或其他任何视图),则触摸将不会传递到遮挡视图-在我的示例中,onClick
将不会被触发
然而,这在API级别7中是不可用的——对于我的项目来说,要求是Android 2.1及以上,这意味着我必须使用级别7
有没有简单的办法?在级别7中,此属性基本上硬编码为FALSE。结果,我得到了一个奇怪的行为:在视图上,我有一个按钮。按下时,另一个视图将滑动到位,并用按钮覆盖视图。在这个视图中,有它自己的按钮,但它与下面按钮的位置不匹配。因此,如果用户在按钮下方的位置触摸覆盖面板,则该按钮的onClick
将再次触发-而不是我想要/需要的
在这种情况下,如何防止onClick
触发?谢谢。事实证明,没有办法做到这一点。在API级别9之前的Android中,有两种解决问题的方法:
从基础视图中删除侦听器(在我的例子中,我有十几个侦听器,需要删除这些侦听器,然后在覆盖层再次不可见后重新设置);或
在整个覆盖上添加一个空的onClickListener(即截取单击事件,对其不做任何操作),这就是我在本例中处理它的方式
有趣的是,在早期版本的Android中,模糊视图接收<代码>点击代码>事件的行为被报告为一个错误,但该错误被关闭,表明它不是一个错误,而是一个预期的功能(我不明白为什么会有人想要该功能)。我想在第9级添加了android:filtertoucheswhenobscure
属性,以安抚所有不开心的开发人员:)2。这是我处理这个案子的一贯方式