lyyzms
lyyzms
2017-08-03 01:20
采纳率: 100%
浏览 915

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • zanjiaowei
    smile_邝野 2017-08-08 01:25
    已采纳

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

    点赞 评论
  • zanjiaowei
    smile_邝野 2017-08-03 07:29

    对于你的这个问题,是华为的手机经常会出现的,需要对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了

    点赞 评论
  • zanjiaowei
    smile_邝野 2017-08-03 08:46

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

    点赞 评论

相关推荐