首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类似android:9以下接口级别的filterTouchesWhenObscured

类似android:9以下接口级别的filterTouchesWhenObscured
EN

Stack Overflow用户
提问于 2012-06-16 00:22:47
回答 1查看 4.8K关注 0票数 4

从API9开始,在ViewGroup上有android:filterTouchesWhenObscured属性和相应的setFilterTouchesWhenObscured方法。例如,当一个视图设置了onClickListener,而另一个视图模糊了该视图(例如,覆盖面板、toast或其他任何东西),那么触摸将不会传递给被遮挡的视图--在我的例子中,onClick将不会被触发。

然而,这在API level 7中是不可用的-对于我的项目,要求是Android 2.1及更高版本,这意味着我必须使用level 7。

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

在这种情况下,我可以做些什么来防止onClick触发?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-18 18:36:57

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

  1. 从底层视图中删除侦听器(在我的例子中,我有大约12个);或者
  2. 在整个覆盖图上添加一个空的onClickListener (即拦截click事件并不对其执行任何操作)-这就是我在我的例子中处理它的方式。

有趣的是,在安卓的早期版本中,接收click事件的模糊视图的行为被报告为一个错误,但这个错误被关闭了,这表明这不是一个错误,而是一个预期的功能(我不明白为什么有人会想要这个功能)。我认为android:filterTouchesWhenObscured属性是在第9级中添加的,目的是安抚所有不满意的开发人员:)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11054654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档