android的类比:filterTouchesWhenObscured的API等级低于9

Ale*_*s G 4 android android-2.1-eclair obscured-view

从API级别9开始,有android:filterTouchesWhenObscured属性和相应的setFilterTouchesWhenObscured方法ViewGroup.例如,当视图已onClickListener设置且另一个视图遮挡该视图(例如覆盖面板,吐司或其他任何内容)时,触摸将不会传递到模糊视图 - 在我的示例中,onClick不会被触发.

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

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

onClick在这种情况下,我该怎么办才能防止射击?谢谢.

Ale*_*s G 6

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

  1. 从基础视图中删除侦听器(在我的情况下,我有大约十几个,我需要删除,然后重叠后再重新设置); 要么

  2. click在整个叠加层上添加一个空的onClickListener(即截取事件并对其执行任何操作) - 这就是我在我的情况下处理它的方式.

有趣的是,接收click事件的模糊视图的行为被报告为早期版本的Android中的一个错误,但该错误已关闭,表明它不是错误而是预期的功能(我无法理解为什么有人会想要这个功能虽然).我想这个android:filterTouchesWhenObscured属性是在第9级添加的,以安抚所有不开心的开发人员:)