做这个的时候需要计算出首页底部布局距离顶部的高度,要把虚拟导航栏高度算在里面
但是发现了一个华为的奇葩bug,华为emui系统的系统导航里可以选手势导航和虚拟导航等方式
选用手势导航后,下面的虚拟导航栏虽然没了
但是代码里获取虚拟导航栏仍显示show,而且高度仍在,不为0
在别的小米ov手机上,开启全面屏导航方式后,导航栏高度获取都是0
原因定位到了,但是解决是痛苦的,想着华为肯定有官方适配方案,结果呵呵...
最后解决方案
/**
* 虚拟按键是否可见
*
* @param activity activity
* @return
*/
public static boolean isNavigationBarShow(Activity activity) {
//虚拟键的view,为空或者不可见时是隐藏状态
View view = activity.findViewById(android.R.id.navigationBarBackground);
if (view == null) {
return false;
}
int visible = view.getVisibility();
if (visible == View.GONE || visible == View.INVISIBLE) {
return false;
} else {
return true;
}
}
通过虚拟导航栏的系统id来拿到view,再通过view去判断当前虚拟导航栏是否可见