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

如何实现Xamarin Android中Splash Screen全屏显示 消除状态栏导航栏遮挡

Xamarin Android 启动页全屏显示解决方案

步骤1:完善启动页主题配置

修改styles.xml中MyTheme.Splash主题,补充适配状态栏、导航栏、刘海屏的属性:

<style name="MyTheme.Splash" parent="AppTheme">
    <item name="android:windowBackground">@drawable/splash_screen</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowActionBar">false</item>
    <!-- 新增以下属性 -->
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:navigationBarColor">@android:color/transparent</item>
    <!-- 适配刘海屏/挖孔屏,让内容延伸到刘海区域 -->
    <item name="android:windowLayoutInDisplayCutoutMode" tools:ignore="NewApi">shortEdges</item>
</style>

如果编译时报找不到tools命名空间的错误,在resources根节点添加属性xmlns:tools="http://schemas.android.com/tools"即可。

步骤2:SplashActivity添加沉浸模式代码

仅靠主题配置在Android 11及以上版本无法完全隐藏系统栏,需要在SplashActivity.cs的OnCreate方法中添加动态设置代码:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    
    // 新增沉浸模式配置
    if (Build.VERSION.SdkInt >= BuildVersionCodes.R)
    {
        Window.SetDecorFitsSystemWindows(false);
        var insetsController = Window.InsetsController;
        if (insetsController != null)
        {
            insetsController.Hide(WindowInsets.Type.StatusBars() | WindowInsets.Type.NavigationBars());
            insetsController.SystemBarsBehavior = (int)WindowInsetsControllerBehavior.ShowTransientBarsBySwipe;
        }
    }
    else
    {
        Window.DecorView.SystemUiVisibility = (StatusBarVisibility)
            (SystemUiFlags.LayoutStable
            | SystemUiFlags.LayoutHideNavigation
            | SystemUiFlags.LayoutFullscreen
            | SystemUiFlags.HideNavigation
            | SystemUiFlags.Fullscreen
            | SystemUiFlags.ImmersiveSticky);
    }
}

额外说明

你提到的NavigationPage方案是针对Xamarin.Forms项目的,如果你开发的是原生Xamarin.Android应用不需要使用该方案。如果是Xamarin.Forms项目,只需要在MainActivity加载Xamarin.Forms之前添加上述沉浸模式代码即可,无需额外调整NavigationPage配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:54:00