You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 13中TYPE_APPLICATION_OVERLAY无法接收输入问题求助

Android 13悬浮层无法接收输入的解决方案

你的悬浮层在Android 13上无响应的核心原因是代码中使用了WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE标记——这个标记会让窗口失去输入焦点,无法接收触摸、点击等事件。Android 13对窗口焦点的处理逻辑比旧版本更严格,导致相同代码在≤12版本能正常工作,但13版本中该标记会完全阻断输入事件传递。

修复代码

移除FLAG_NOT_FOCUSABLE,添加FLAG_FOCUSABLE和FLAG_NOT_TOUCH_MODAL来保证窗口能获取焦点同时不屏蔽下层交互:

View test = LayoutInflater.from(context).inflate(R.layout.test, null, false);

WindowManager.LayoutParams params =
    new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
        WindowManager.LayoutParams.FLAG_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
        PixelFormat.OPAQUE);

windowManager.addView(test, params);

关键标记说明

  • FLAG_FOCUSABLE:允许悬浮层窗口获取输入焦点,这样控件才能响应交互事件。
  • FLAG_NOT_TOUCH_MODAL:确保点击悬浮层以外的区域时,事件能正常传递给下层应用,避免影响其他窗口的使用。

额外检查点

如果修复后仍有问题,可排查:

  • 悬浮层布局内的控件是否被设置了android:focusable="false"或android:clickable="false"属性。
  • 是否存在其他窗口标记(如FLAG_NOT_TOUCHABLE)意外阻断了事件传递。

内容的提问来源于stack exchange,提问作者saurabh verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:02:28