Android屏幕底部的黑色导航栏无法轻松移除.它从3.0开始就是Android的一部分,作为硬件按钮的替代品.这是一张图片:

如何获得此UI元素的宽度和高度的大小(以像素为单位)?
我想计算导航栏高度。我看过这个演讲:https : //chris.banes.me/talks/2017/becoming-a-master-window-fitter-nyc/
所以,我尝试使用方法View.setOnApplyWindowInsetsListener()。但是,出于某种原因,它从未被调用过。
有谁知道为什么?有什么限制吗?
我试过这样使用它:
navBarOverlay.setOnApplyWindowInsetsListener { v, insets ->
Timber.i("BOTTOM = ${insets.systemWindowInsetBottom}")
return@setOnApplyWindowInsetsListener insets
}
Run Code Online (Sandbox Code Playgroud)
请注意,我的根布局是一个ConstraintLayout.
我需要检查一个设备是否有软导航栏,我按照这里的建议.
它工作得很好,除了onePlus设备,出于某种原因,这段代码:
int id = resources.getIdentifier("config_showNavigationBar", "bool", android");
return id > 0 && resources.getBoolean(id);
Run Code Online (Sandbox Code Playgroud)
虽然显示了软导航栏,但返回false.
知道如何才能得到正确的结果?
我更喜欢不计算实际宽度和可用宽度,这似乎是昂贵的操作.
谢谢.