12

在 Honeycomb 中,我能够使用 TYPE_SYSTEM_OVERLAY 创建系统覆盖并使用 FLAG_WATCH_OUTSIDE_TOUCH 接收触摸。

现在 ICS 改变了一些东西。我仍然可以创建系统覆盖,但我无法接触。

现在,我可以使用 TYPE_SYSTEM_ALERT 创建相同的内容并进行触摸,但它只是捕获触摸事件,而不是像在 Honeycomb 中那样传递它们。

有任何想法吗?

亲切的问候

4

2 回答 2

24

要创建覆盖视图,在设置 LayoutParams 时 不要将类型设置为TYPE_SYSTEM_OVERLAY.

而是将其设置为TYPE_PHONE.

使用以下标志:

FLAG_NOT_TOUCH_MODAL

FLAG_WATCH_OUTSIDE_TOUCH

FLAG_NOT_TOUCH_MODAL << 我发现这个很重要。没有它,焦点将被赋予覆盖和软键(主页、菜单等)按下不会传递给下面的活动。

于 2013-01-04T01:40:41.613 回答
7

你所描述的一切都是真实的。可能是为了加强安全性,因为前一种行为是窃听攻击的来源。我最近写了一篇关于此更改的博客文章。

有任何想法吗?

不要使用它们中的任何一个。

于 2012-03-11T15:26:39.037 回答