扫码关注官方订阅号
现在要做一个全屏显示,正好底部有按键,跟NavigationBar的按键重叠了,把NavigationBar隐藏之后也不行,只要一点击就重新出现了,现在想先判断手机有没有NavigationBar,如果有的话,留出底部NavigationBar的高度,避免重叠.不知如何判断???
认证0级讲师
NavigationBar是一个坑,下面给出我判断是否存在NavigationBar的方法,你试一下。
//获取是否存在NavigationBar public static boolean checkDeviceHasNavigationBar(Context context) { boolean hasNavigationBar = false; Resources rs = context.getResources(); int id = rs.getIdentifier("config_showNavigationBar", "bool", "android"); if (id > 0) { hasNavigationBar = rs.getBoolean(id); } try { Class systemPropertiesClass = Class.forName("android.os.SystemProperties"); Method m = systemPropertiesClass.getMethod("get", String.class); String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys"); if ("1".equals(navBarOverride)) { hasNavigationBar = false; } else if ("0".equals(navBarOverride)) { hasNavigationBar = true; } } catch (Exception e) { } return hasNavigationBar; }
虚拟按键从3.0版本以后才出现,可以换个思路,做版本判断,3.0之后在需要全屏的页面直接调隐藏虚拟键API,让系统去处理就好了。
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
NavigationBar是一个坑,下面给出我判断是否存在NavigationBar的方法,你试一下。
虚拟按键从3.0版本以后才出现,可以换个思路,做版本判断,3.0之后在需要全屏的页面直接调隐藏虚拟键API,让系统去处理就好了。