火山安卓的悬浮窗现在有bug了吗》
具体内容文字不好描述,上传了一段视频劳烦大佬看一下,除了视频中说的布局问题外,编辑框也没办法正常交互了,编辑框能获取光标但不会触发键盘,不能粘贴,总结就是布局大小不正常,组件交互也不对劲。【火山安卓悬浮窗BUG???】 https://www.bilibili.com/video/BV1UCVR6BEUY/?share_source=copy_web&vd_source=532575f852aa3a91af7a4424f71d9029
悬浮窗口类.新建(,悬浮窗口类.类型_允许获得输入焦点) 创世魂 发表于 2026-6-1 10:00
悬浮窗口类.新建(,悬浮窗口类.类型_允许获得输入焦点)
布局不正常的问题这个怎么处理 创世魂 发表于 2026-6-1 10:00
悬浮窗口类.新建(,悬浮窗口类.类型_允许获得输入焦点)
刚才测试了,加了【类型_允许获得输入焦点】是可以输入了,但是会导致整个屏幕无法触摸,比如即便是将悬浮窗的大小设置在100*100,这很明显并没有沾满整个屏幕,但整个屏幕依旧是被悬浮窗铺满,导致没有组件的地方是透明的悬浮窗,从而无法操作其他地方了 我用AI解决了这个问题,首先悬浮窗模块加入这个方法
<火山程序 类型 = "通常" 版本 = 1 />
方法 置输入焦点 <公开 注释 = "动态切换悬浮窗是否允许获得系统输入焦点。允许焦点时输入法可弹出,但会阻塞其他App的IME。" 注释 = "禁止焦点时其他App的输入法和手势正常,但悬浮窗内不弹出输入法。">
参数 是否允许焦点 <类型 = 逻辑型 注释 = "真=允许焦点/可弹出输入法, 假=禁止焦点/不阻塞其他App">
{
@ if (@<是否允许焦点>) {
@ // 允许焦点:移除 FLAG_NOT_FOCUSABLE + 添加 FLAG_WATCH_OUTSIDE_TOUCH 以检测窗外触摸
@ m_savedFlags = params.flags & (WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
@ params.flags &= ~WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
@ params.flags |= (WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
@ } else {
@ // 禁止焦点:恢复 FLAG_NOT_FOCUSABLE + 移除 FLAG_WATCH_OUTSIDE_TOUCH
@ params.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
@ params.flags &= ~WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
@ }
更新视图 ()
}
常量里加入
<火山程序 类型 = "通常" 版本 = 1 />
常量 类型_允许窗口外触摸 <公开 类型 = 整数 值 = @android.view.WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
注释 = "设置悬浮窗允许接收窗口外部的触摸事件(ACTION_OUTSIDE),用于检测用户触摸悬浮窗外(桌面/其他App)时自动清除编辑框焦点。" 编辑时信息 = "0, BFFF4, 0, 0">
然后在悬浮窗口 编辑框_组件焦点被改变 获得焦点后执行 悬浮窗口.置输入焦点 (真)
在悬浮窗口 线性布局器_被触摸 编辑框.释放焦点 () 悬浮窗口.置输入焦点 (假)
最后 悬浮窗口 = 悬浮窗口类.新建 (操作的窗口, 悬浮窗口类.类型_禁止覆盖窗口 + 悬浮窗口类.类型_允许窗口外触摸)
页:
[1]