Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android的类似功能:filterTouchesWhenObscured用于低于9级的API_Android_Android 2.1 Eclair_Obscured View - Fatal编程技术网

android的类似功能:filterTouchesWhenObscured用于低于9级的API

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 有没有简单的办法?在级

从API级别9开始,在
视图组上有
android:filterTouchesWhenObscured
属性和相应的
setFilterTouchesWhenObscured
方法。例如,当一个视图设置了
onClickListener
且另一个视图遮挡了该视图(例如覆盖面板、烤面包片或其他任何视图),则触摸将不会传递到遮挡视图-在我的示例中,
onClick
将不会被触发

然而,这在API级别7中是不可用的——对于我的项目来说,要求是Android 2.1及以上,这意味着我必须使用级别7

有没有简单的办法?在级别7中,此属性基本上硬编码为FALSE。结果,我得到了一个奇怪的行为:在视图上,我有一个按钮。按下时,另一个视图将滑动到位,并用按钮覆盖视图。在这个视图中,有它自己的按钮,但它与下面按钮的位置不匹配。因此,如果用户在按钮下方的位置触摸覆盖面板,则该按钮的
onClick
将再次触发-而不是我想要/需要的


在这种情况下,如何防止
onClick
触发?谢谢。

事实证明,没有办法做到这一点。在API级别9之前的Android中,有两种解决问题的方法:

  • 从基础视图中删除侦听器(在我的例子中,我有十几个侦听器,需要删除这些侦听器,然后在覆盖层再次不可见后重新设置);或

  • 在整个覆盖上添加一个空的onClickListener(即截取
    单击
    事件,对其不做任何操作),这就是我在本例中处理它的方式


  • 有趣的是,在早期版本的Android中,模糊视图接收<代码>点击事件的行为被报告为一个错误,但该错误被关闭,表明它不是一个错误,而是一个预期的功能(我不明白为什么会有人想要该功能)。我想在第9级添加了
    android:filtertoucheswhenobscure
    属性,以安抚所有不开心的开发人员:)

    2。这是我处理这个案子的一贯方式