Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

华为 mate8手机因为存在虚拟导航栏导致,导致布局多一块 #44

Open
LLQQHH opened this issue Sep 7, 2021 · 6 comments
Open

Comments

@LLQQHH
Copy link

LLQQHH commented Sep 7, 2021

因为虚拟导航栏可以手动去关闭,手动关闭后,所以就多了一块黑的区域!我这边也无法监听到导航栏有没有被关闭,所以也无法动态去掉UltimateBarX写的导航栏那一块View
image

@loper7
Copy link

loper7 commented Sep 9, 2021

不仅是华为系列,很多手机可以动态选择是否使用底部导航栏,关于导航栏是否有的判断逻辑应该是有问题的

@Zackratos
Copy link
Owner

不仅是华为系列,很多手机可以动态选择是否使用底部导航栏,关于导航栏是否有的判断逻辑应该是有问题的

导航栏是否有的判断逻辑没有问题,问题是不能监听到导航栏的隐藏和显示

@Zackratos
Copy link
Owner

如果你只需要设置状态栏而不需要设置导航栏的话,更新到 0.8.0 版本,使用 statusBarOnly 方法替换 statusBar 方法可以彻底解决这个问题
@LLQQHH @loperSeven

@LLQQHH
Copy link
Author

LLQQHH commented Nov 16, 2021

是否可以参考一下ImmersionBar这个库,我看了一下,他有做兼容处理!我收起来他也会跟着收起来

@Zackratos
Copy link
Owner

是否可以参考一下ImmersionBar这个库,我看了一下,他有做兼容处理!我收起来他也会跟着收起来

这个我要解释一下,其实 Android 中系统自带的设置导航栏的方法是不需要监听导航栏显示和隐藏的,本身就会跟着导航栏的变化而变化,但是系统自带的方法有个缺点就是状态栏和导航栏的设置的某些 api 是耦合在一起的,无法单独设置,我为了解决这个问题,让状态栏和导航栏可以单独设置,并且可以多次设置不同效果,就做了一些骚操作,首先只要你设置了不管设置的是状态栏还是导航栏,不管是什么效果,我都会把状态栏和导航栏进行一个初始化设置,这个初始化设置会让状态栏和导航栏都「沉浸」,然后再通过在根 View 中添加 View 的方式来设置具体需要的效果,这就导致一个问题,就是当导航栏发生变化的时候,虽然系统自带的沉浸效果可以一起随着变化,但是我添加的 View 依然存在,并且因为无法监听导航栏的变化,所以没法移除,就出现了你们遇到的这个问题,而 ImmersionBar 之所以没有这个问题,是因为他就是直接用的系统的 api 来设置导航栏的,所以他的状态栏和导航栏的方法无法解耦,也就不能单独设置也不能多次设置不同效果,然后,我最近更新的 0.8.0 版本提供了 statusBarOnly 方法其实就是只设置状态栏,导航栏始终没有设置,没有初始化沉浸,没有添加 View,也就不会出现这个问题了

@zs1973
Copy link

zs1973 commented Feb 10, 2023

如果使用statusBarOnly 下满的虚拟按键的背景和上面状态栏的背景就不一致了 我看了一下 你们线上的产品也是有这个问题的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants