小米获取屏幕高度不准确-小米获取屏幕高度的兼容方案

小米8在虚拟按键隐藏时,使用常规方法获取屏幕高度仍包含虚拟按键区域,导致高度不准确。解决方法是通过代码判断并补偿虚拟按键高度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天发现,小米8手机获取屏幕高度的方法不准确,进过一些测试以后发现是虚拟导航按键出了问题。

这里获取屏幕高度的方法用的是

public static int getScreenHeight(Activity activity) {
        DisplayMetrics dm = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
        int height = dm.heightPixels;
        return height;
    }

我们知道这个方法获取屏幕高度的时候

1.当屏幕有虚拟按键的情况下,获取的是屏幕顶部到虚拟按键上部的距离。

2.当屏幕没有虚拟按键的情况下,获取的是屏幕顶部到屏幕底部的距离。

因为我们的页面元素一般不希望被虚拟按键遮挡,所以这个方法一般是我们所希望的。

但是经过测试,小米8手机在虚拟按键未设置的情况下,依然返回的是情况1的高度。这样返回的高度实际缺少了虚拟按键的高度。

根据查阅资料,我猜测是因为获取虚拟按键状态的系统方法在小米系统内不能正常使用,导致这个获取屏幕高度的方法认为虚拟按键是开启状态。(因为懒,所以没去深究源码)。

既然知道了原因,接下来就是去解决了。

直接上代码

获取高度的方法

     /**
     * 获取屏幕高度
     *
     * @param activity
     * @return
     */
    public static int getScreenHeight(Activity activity) {
        DisplayMetrics dm = new DisplayMetrics();
        activity.ge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值