You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算三星手势导航模式下底部导航栏的高度?

计算三星手势导航底部栏高度的方法

在三星设备开启全屏滑动手势(手势导航)时,底部会显示带有三个细长按钮的黑色小栏。若截图未包含该栏,设置为背景时会因填充全屏导致拉伸,添加与该栏等高的底部边距即可解决问题,以下是几种计算该栏高度的方法:

  • 通过系统资源直接获取
    三星手势导航栏的高度对应系统内置的navigation_bar_height资源,可通过代码读取:
    Kotlin 实现:

    val resources = context.resources
    val resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android")
    val navBarHeight = if (resourceId > 0) resources.getDimensionPixelSize(resourceId) else 0
    

    Java 实现:

    Resources resources = context.getResources();
    int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
    int navBarHeight = 0;
    if (resourceId > 0) {
        navBarHeight = resources.getDimensionPixelSize(resourceId);
    }
    

    该方法直接调用系统定义的导航栏高度,适配三星手势导航模式。

  • 通过WindowInsets动态获取(Android 11+)
    针对Android 11及以上版本,推荐使用WindowInsets获取实时的系统栏尺寸,结果更准确:
    Kotlin 实现:

    view.setOnApplyWindowInsetsListener { _, insets ->
        val navBarHeight = insets.getInsets(WindowInsets.Type.navigationBars()).bottom
        // 使用获取到的navBarHeight为目标视图设置底部边距
        insets
    }
    

    Java 实现:

    view.setOnApplyWindowInsetsListener((v, insets) -> {
        int navBarHeight = insets.getInsets(WindowInsets.Type.navigationBars()).bottom;
        // 利用navBarHeight配置底部边距
        return insets;
    });
    

    此方法能动态适配当前导航模式下的栏高度,兼容性更强。

  • 手动测量(临时应急方案)
    若无法通过代码获取,可手动截取包含底部栏的屏幕截图,用图片编辑工具(如Photoshop、系统画图工具)测量栏的高度,再根据设备DPI转换为实际像素值:
    实际像素值 = 截图中测量的高度(px) × (设备DPI / 截图DPI)

内容的提问来源于stack exchange,提问作者moyo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:20:20