qq_33756493
昵称_Justin
2017-08-11 09:12
采纳率: 75%
浏览 1.6k

Android 7.0系统计算屏幕高度出错

使用Android 7.0系统(1920 x 1080)但是计算出来的高度只有1812,使用Android 6.0系统,同样的代码计算出来的高度就是1920的,那么在7.0系统上面还有108的高度哪里去了?

--------------这样的题目应该附上代码。

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

2条回答 默认 最新

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

    这个和屏幕密度有关,代码计算出来的高度是像素,你转成dp看看一样吗?
    public int pxToDp(Context context,int px) {

    DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();

    int dp = Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));

    return dp;

    }

    你先转过去打印下结果看看

    点赞 评论
  • j7a2son
    宝杰X7 2017-08-15 02:20
    /**
     * 获取状态栏的高度
     *
     * @param context
     * @return
     */
    private static int getStatusHeight(Context context) {
        int statusHeight = 0;
        Rect localRect = new Rect();
        ((Activity) context).getWindow().getDecorView().getWindowVisibleDisplayFrame(localRect);
        statusHeight = localRect.top;
        if (0 == statusHeight) {
            Class<?> localClass;
            try {
                localClass = Class.forName("com.android.internal.R$dimen");
                Object localObject = localClass.newInstance();
                int i5 = Integer.parseInt(localClass.getField("status_bar_height").get(localObject).toString());
                statusHeight = context.getResources().getDimensionPixelSize(i5);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return statusHeight;
    }
        //你输出状态栏高度,自己算下,其实最直接的方法自定义一个view,在onMeasure()logcat出
    
    点赞 评论

相关推荐