navigationbar隐藏后,toast不重新计算高度

navigationbar隐藏后,toast不重新计算高度。导致下方会空白一块。

3个回答

楼主你就是 一个骗子,还是 第一次遇到你这种人啊

对于你的这个问题,是华为的手机经常会出现的,需要对navigationbar进行监听,然后隐藏后要在计算高度时加上navigationbar的高度
//获取是否存在NavigationBar
public static boolean checkHuaWeiDeviceHasNavigationBar(Context context) {
boolean hasNavigationBar = false;
try {
Resources rs = context.getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id > 0) {
hasNavigationBar = rs.getBoolean(id);
}
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;
}

//NavigationBar状态是否是显示
public boolean isNavigationBarShow() {
Activity mContext = (Activity) context;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Display display = mContext.getWindowManager().getDefaultDisplay();
Point size = new Point();
Point realSize = new Point();
display.getSize(size);
display.getRealSize(realSize);
return realSize.y != size.y;
} else {
boolean menu = ViewConfiguration.get(context).hasPermanentMenuKey();
boolean back = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
if (menu || back) {
return false;
} else {
return true;
}
}
}
//获取NavigationBar的高度
private int getNavigationBarHeight() {
Resources resources = context.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
int height = resources.getDimensionPixelSize(resourceId);
Log.v("dbw", "Navi height:" + height);
return height;
}
后在onMeasure方法中进行判断高度就ok了

如果还有问题可以给我发私信

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问