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

如何配置Android系统栏与导航栏实现类Google Pay的沉浸式效果

Android 实现Google Pay同款透明系统栏/导航栏方案

1. 基础主题配置

首先在你的应用主题(res/values/themes.xml)中添加以下配置,适配不同Android版本:

<!-- 基础主题,可替换为你当前使用的主题父类 -->
<style name="Theme.YourApp" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- 状态栏背景设为完全透明 -->
    <item name="android:statusBarColor">@android:color/transparent</item>
    <!-- 导航栏背景设为完全透明 -->
    <item name="android:navigationBarColor">@android:color/transparent</item>
    <!-- Android 10以上禁用导航栏默认半透明遮罩 -->
    <item name="android:enforceNavigationBarContrast">false</item>
    <!-- 取消系统默认的内容边距限制 -->
    <item name="android:fitsSystemWindows">false</item>
</style>

如果需要适配Android 8.0以下的版本,可以额外在values-v26/themes.xml中单独调整导航栏图标配色规则。

2. Activity 初始化配置

在需要实现该效果的Activity的onCreate方法中,添加以下配置:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // 允许应用内容绘制到系统栏和导航栏区域
    WindowCompat.setDecorFitsSystemWindows(window, false)
    
    // 配置系统栏图标颜色,浅色背景下使用深色图标,适配白色栏的视觉效果
    WindowInsetsControllerCompat(window, window.decorView).apply {
        // 状态栏图标设为深色
        isAppearanceLightStatusBars = true
        // 导航栏图标设为深色
        isAppearanceLightNavigationBars = true
    }

    setContentView(R.layout.activity_main)

    // 给可滚动容器添加适配系统栏的padding,避免初始内容被系统栏遮挡
    val scrollContainer = findViewById<NestedScrollView>(R.id.scroll_container)
    ViewCompat.setOnApplyWindowInsetsListener(scrollContainer) { view, insets ->
        val systemBarsInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars())
        // 给滚动容器设置顶部、底部的padding,对应状态栏、导航栏高度
        view.setPadding(
            view.paddingLeft,
            systemBarsInsets.top,
            view.paddingRight,
            systemBarsInsets.bottom
        )
        insets
    }
}

配置完成后滚动容器的内容会自然延伸到系统栏区域显示,滚动时内容会从系统栏下方穿过,和Google Pay的交互效果完全一致。

3. 注意事项

  • 不要在布局的根节点手动设置android:fitsSystemWindows="true",否则会阻止内容延伸到系统栏区域
  • 如果需要动态切换深浅色模式,同步调用isAppearanceLightStatusBars和isAppearanceLightNavigationBars切换图标颜色即可,不需要改动其他逻辑
  • 该方案不会影响原有功能逻辑,所有交互、事件响应都和原有逻辑完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:24:03