princekin-f / EasyFloat

🔥 EasyFloat:浮窗从未如此简单(Android可拖拽悬浮窗口,支持页面过滤、自定义动画,可设置单页面浮窗、前台浮窗、全局浮窗,浮窗权限按需自动申请...)
Apache License 2.0
3.35k stars 431 forks source link

FloatingWindowHelper中设置config.layoutView和config.layoutId处理逻辑不一致,导致在使用setFilter时需要手动显示view #228

Open WzhiHuan opened 1 year ago

WzhiHuan commented 1 year ago

2.0.4版本中 FloatingWindowHelper此类中第119行-125行如下

frameLayout = ParentFrameLayout(rootViewContext, config) frameLayout?.tag = config.floatTag // 将浮窗布局文件添加到父容器frameLayout中,并返回该浮窗文件 val floatingView = config.layoutView?.also { frameLayout?.addView(it) } ?: LayoutInflater.from(context).inflate(config.layoutId!!, frameLayout, true) // 为了避免创建的时候闪一下,我们先隐藏视图,不能直接设置GONE,否则定位会出现问题 floatingView.visibility = View.INVISIBLE

config.layoutView不为空的情况下 floatingView 为外部自定义view config.layoutId不为空的情况下 floatingView 为内部ParentFrameLayout

125行中config.layoutView被设为不可见的情况,会导致setFilter()在隐藏悬浮窗后,即时切到可显示悬浮窗的页面也仍然不显示,需要手动在OnFloatCallbacks的show回调方法中设置为可见

希望版本升级后,config.layoutView和config.layoutId能保持一致