【发布时间】:2016-05-10 12:26:54
【问题描述】:
我需要在拨号器应用程序顶部显示我的视图,因此我为此使用了 TYPE_PHONE,它是可触摸的,但仍然在某些设备上,例如设备的 Nexus 5 拨号器应用程序隐藏它。
尝试使用 TYPE_SYSTEM_OVERLAY 使视图在拨号器应用程序顶部可见,但触摸不存在。任何有关这方面的帮助都会很棒。
【问题讨论】:
我需要在拨号器应用程序顶部显示我的视图,因此我为此使用了 TYPE_PHONE,它是可触摸的,但仍然在某些设备上,例如设备的 Nexus 5 拨号器应用程序隐藏它。
尝试使用 TYPE_SYSTEM_OVERLAY 使视图在拨号器应用程序顶部可见,但触摸不存在。任何有关这方面的帮助都会很棒。
【问题讨论】:
经过大量搜索上述问题,我找到了自己的解决方案。这就是我如何使视图位于设备内部的所有内容之上并使其可触摸,这是 TYPE_SYSTEM_OVERLAY 无法实现的。
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
PixelFormat.TRANSPARENT);
params.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(view, params);
【讨论】:
if (!Settings.canDrawOverlays(this)) { Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName())); startActivityForResult(intent, OVERLAY_REQ_CODE); }