【发布时间】:2015-09-24 15:17:57
【问题描述】:
我正在尝试创建一个始终显示在屏幕上的按钮。
- 该按钮应该是可点击的并且 按钮正下方的任何内容 不应在印刷机上激活。
- 正在运行的活动或主屏幕 按钮后面应该仍然可以工作, 意味着用户仍然应该是 能够与家互动 屏幕或应用程序。
- 软键 按钮应该仍然有效:主页, 返回、菜单等
以下代码执行 #1 和 #2,但软键按钮不再起作用:
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
将其更改为此会禁用覆盖点击,但 #2 和 #3 有效:
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
最后,在这个例子中,覆盖层及其后面的内容被点击:
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
如何更改此设置以使叠加层可点击,直接位于其下方的内容不可点击,并且叠加层之外的所有内容(包括主页按钮)都可以正常工作?
一个执行所有这些的示例应用程序是超级管理器。
更新:我发现以下允许使用主页按钮,但仍然不能使用其他按钮:
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT |
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
,
【问题讨论】:
-
您能否发布最终答案或更新您的问题?另外,你用来构建它的权限是什么?
标签: android