首页 > 如何判断手机有没有虚拟按键(NavigationBar)?

如何判断手机有没有虚拟按键(NavigationBar)?

现在要做一个全屏显示,正好底部有按键,跟NavigationBar的按键重叠了,把NavigationBar隐藏之后也不行,只要一点击就重新出现了,现在想先判断手机有没有NavigationBar,如果有的话,留出底部NavigationBar的高度,避免重叠.不知如何判断???


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);
【热门文章】
【热门文章】