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

Pixel 6升级Android 15后边到边模式隐藏顶部TextView,如何解决?

解决Android 15边到边模式导致内容遮挡/系统栏不显示的问题

一、直接禁用边到边模式

如果不需要边到边显示效果,可在Activity的onCreate方法中直接关闭该模式:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // 恢复系统栏默认行为,禁用边到边模式
    WindowCompat.setDecorFitsSystemWindows(window, true)
    setContentView(R.layout.activity_main)
}

Java版本:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    WindowCompat.setDecorFitsSystemWindows(getWindow(), true);
    setContentView(R.layout.activity_main);
}

二、保留边到边模式同时修复问题

若想保留边到边效果,需同时处理系统栏可见性和内容内边距:

  1. 强制显示系统栏并配置样式
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val insetsController = WindowCompat.getInsetsController(window, window.decorView)
    // 显示状态栏
    insetsController.show(WindowInsetsCompat.Type.statusBars())
    // 如需显示导航栏可添加此行
    insetsController.show(WindowInsetsCompat.Type.navigationBars())
    // 根据背景设置状态栏图标颜色(true为深色图标,false为浅色)
    insetsController.isAppearanceLightStatusBars = true
}
  1. 给布局添加内边距避免内容被遮挡
    可在布局根View中添加静态内边距:
android:paddingTop="?android:attr/statusBarHeight"

或用动态Insets适配:

ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.root_layout)) { view, insets ->
    val statusBarInsets = insets.getInsets(WindowInsetsCompat.Type.statusBars())
    view.setPadding(0, statusBarInsets.top, 0, 0)
    insets
}

三、检查主题配置

确认Activity主题未强制隐藏系统栏,打开styles.xml移除相关属性:

<style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
    <!-- 移除以下可能导致系统栏隐藏的属性 -->
    <!-- <item name="android:windowFullscreen">true</item> -->
    <!-- <item name="android:windowTranslucentStatus">true</item> -->
</style>

内容的提问来源于stack exchange,提问作者Style-7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:22:33