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

API 35中如何让布局元素避开状态栏?禁用Edge-to-Edge或设上边距

API 35 布局元素被状态栏遮挡的两种有效解决方案

方案一:禁用Edge-to-Edge模式

  • 直接移除Activity中启用Edge-to-Edge的核心代码,系统会自动让布局避开状态栏区域:
    // 删除或注释掉这行启用edge-to-edge的代码
    // WindowCompat.setDecorFitsSystemWindows(window, false)
    
  • 若之前有设置系统UI相关的调整代码(比如修改状态栏颜色、UI可见性的额外配置),也同步移除,确保布局默认适配状态栏间距。

方案二:动态设置MarginTop适配状态栏高度

正确获取状态栏高度

避免硬编码24dp(不同设备状态栏高度可能有差异),通过系统资源获取更准确:

val statusBarHeight = resources.getIdentifier("status_bar_height", "dimen", "android").takeIf { it > 0 }
    ?.let { resources.getDimensionPixelSize(it) }
    ?: (resources.displayMetrics.density * 24F).toInt()

动态设置View的MarginTop

不要直接修改View.top(会覆盖布局参数),通过LayoutParams修改:

val params = myButton.layoutParams as ViewGroup.MarginLayoutParams
params.topMargin = statusBarHeight
myButton.layoutParams = params

注意:@*android:dimen/status_bar_height属于系统私有资源,高版本API中无法直接引用,因此这种方式无效,必须用代码动态获取高度后设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:20:58