【发布时间】:2012-04-24 14:39:45
【问题描述】:
我正在使用带有自定义视图的 Toast。我实例化视图并在 toast 上调用 setView。 Toast 应该漂浮在顶部并且不接收焦点和触摸事件,并且效果很好。应用启动后,用户抱怨在 Galaxy Note 等一些手机型号上,Toast 确实有触摸事件,而它下面的应用没有。
我打印了视图在 setLayoutParams 方法中获取的布局参数标志 (WindowManager.LayoutParams)。事实证明,在大多数设备上,该值是 0x000098,但在某些设备上是 0x040088。在 Toast 获得触摸事件的设备上,标志 FLAG_NOT_TOUCHABLE 被移除,并添加标志 FLAG_WATCH_OUTSIDE_TOUCH。这解释了为什么 toast 会获得触摸事件。
但造成这种差异的原因是什么?有没有办法强制吐司不可触摸?
【问题讨论】:
-
您找到答案了吗?另外,您是如何阅读 Toast 参数的?
-
是“toast.getView().setEnabled(false);”为你工作?这应该禁用 toast 视图上的触摸事件。
-
这个问题有2年了,突然活过来了。我目前没有设备可以对此进行测试
-
@domi 我尝试了 toast.getView().setEnabled(false) 但没有用。不过,这听起来是个不错的尝试。
-
@theJosh 我没有找到答案。我使用 SYSTEM_ALERT_WINDOW 代替我可以显式设置标志的地方。
标签: android