razerdp/BasePopup

关于MIUI小白条及类似的“全面屏手势提示线”覆盖问题描述

razerdp opened this issue · 14 comments

在测试机更新到MIUI12后,我发现了小白条的存在,起初认为没什么,但在用了一些应用后发现其实大家都对这个并没有适配,比如TIM:
device-2020-06-29-151007
当然,我们BasePopup在抛弃了手动测量高度而将其交回给系统后,也出现了这个情况:
微信截图_20200629151237
为了验证,我分别使用了系统自身的Popup和Dialog分别进行验证:

PopupWindow Dialog
微信截图_20200629152026 微信截图_20200629152111

我们可以发现,系统的PopupWindow一样有问题,而Dialog并没有。

考虑到Dialog是拥有自己的Window的,而PopupWindow依附于Parent的Window,所以Dialog在这一方面表现的确较好,不过咱们是BasePopup(也许以后会提供一个Dialog模式~),那么解决问题当然是以PopupWindow为准。

问题根源

其实看到这个小白条,我第一时间就想到曾经也有三星手机相关的issue,也是这种缩小型的navigationbar:

#184

于是打开LayoutInspector查看了一下,果不其然,这个小白条 根本就不是ios那样的沉浸式 ,而是单纯的修改了NavigationBar

微信图片_20200629152612

而PopupWindow是不应该覆盖navigationbar的,因为覆盖的话会造成事件拦截,navigationbar的事件被抢先消耗了。

BasePopup的解决方案

目前BasePopup的确有解决方案,但是这套方案依然会有上面所说的覆盖navigationbar的问题,在此我提供了一些方案选择,或者如果大家有更好的方式也请在issue提出并讨论:

目前BasePopup覆盖navigationbar问题不大,但是就覆盖的问题提出两种方案:

  1. BasePopup统筹整体布局,对BasePopup内的根布局进行底部 padding ,为了更好的扩展,将提供开关让用户选择是否进行padding(默认应该是保留padding以保证不覆盖navigation)

  2. BasePopup不处理布局,但是会提供回调给BasePopupWindow,用户可以在回调方法内自行处理

附录:方案展示及方案问题所在:

覆盖navigation navigatin阻挡
微信图片_20200629153513 微信图片_20200629153518

candy目前采取 方案一 进行适配,相关更新请看手册——正在开发

适配diff:

075b264

希望能尽快发正式版 项目中遇到了此类问题

@DaveBoy
candy可以用。

@DaveBoy
candy可以用。

好的

你好,在更新2.2.7后,pop底部会多出来个跟导航栏高度相同的灰条。setOverlayNavigationBar方法默认是false,就会多出来一条,设置为true,布局也没有侵入到导航栏里。
手机:小米10
系统:miui12 内测版 20.9.8
效果如下图。
false
true

你好,在更新2.2.7后,pop底部会多出来个跟导航栏高度相同的灰条。setOverlayNavigationBar方法默认是false,就会多出来一条,设置为true,布局也没有侵入到导航栏里。
手机:小米10
系统:miui12 内测版 20.9.8
效果如下图。
false
true

我的测试机就是MIUI12,Android 10哦~

你可以提供一下你的布局以及代码吗(最好用个简单的布局尝试复现)【ps,另外开个issue单独讨论吧】

你好,miui12 20.7.6 内测版本,这个手势提示线遮挡了app底部的部分ui,例如底部tab等

许多应用包括手机系统应用,均有该问题

需要开发者做适配,还是后面会有全局修正?

image

手机系统应用,均有该问

手机系统也有 不应该是小米的问题吗。。。

@philip2016 这。。你得跟小米反馈一下喔 = = 跟我弹窗这边好像没啥关系

额,是小米系统问题,看花了,我以为这里是小米反馈渠道.... .... 尴尬了

设置导航键不可见就行了

这个问题,小米官网也有相应的解决方案,当初我也找了好久

这个问题,小米官网也有相应的解决方案,当初我也找了好久

请问有链接吗~毕竟我这里的解决方案可能不完美,看看官方的方案