Android启动活动显示在系统栏后面

时间:2018-08-14 06:23:55

标签: android android-studio splash-screen

我正在使用主题从可绘制对象制作启动屏幕。但是,初始屏幕的可绘制对象显示在系统栏的后面,如下所示。

Splash screen window background displays behind system bars

这是我的启动画面可绘制splash_screen.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@color/slighty_red" />

    <item>
        <bitmap
            android:src="@drawable/test_icon"
            android:gravity="center_horizontal|bottom" />
    </item>

</layer-list>

这是我的启动画面主题:

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/splash_screen</item>
    <item name="android:fitsSystemWindows">true</item>   <!--Tried this but it doesn't work-->
</style>

然后我将此主题应用于清单中的我的启动活动:

<activity
    android:name=".SplashActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

我已经尝试过在启动主题中将fitsSystemWindows设置为true,并且我的启动活动没有布局文件来将fitsSystemWindows设置为true。

我该如何做,以使我的启动屏幕不显示在系统栏后面?

9 个答案:

答案 0 :(得分:1)

如果您不想花费更多时间调试此问题,可以使用android:paddingTop="20dp"进行简单快速的修复

答案 1 :(得分:1)

找到解决方案:

在启动主题中,更改

<item name="android:windowBackground">@drawable/splash_screen</item>

<item name="android:background">@drawable/splash_screen</item>

现在启动画面可绘制对象将不会在系统栏后面绘制

来源:https://forums.xamarin.com/discussion/119638/splash-screen-using-android-windowbackground-does-goes-behind-statusbar

答案 2 :(得分:0)

将此内容添加到onCreate()之前的setContentView()

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

这将使您的splash screen fullscreen

答案 3 :(得分:0)

将此代码添加到您的Splash主题中:

<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>

答案 4 :(得分:0)

如果您要删除状态栏,请在setContentView(layout)方法的onCreateView之前使用它

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

或在XML设计的父级布局上设置paddingTop ="20dp"

android:paddingTop="20dp"

答案 5 :(得分:0)

这将使您的启动屏幕进入全屏模式。只需将其添加到您的onCreate()onCreateView()上即可。

 getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN);

答案 6 :(得分:0)

您可以使用:

android:layout_alignParentBottom="true"

答案 7 :(得分:0)

添加此样式

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/splash_screen</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item> <!--use this to make the activity full screen-->
</style>

答案 8 :(得分:0)

在您的oncreate中尝试一下,

   @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            /** Hiding Title bar of this activity screen */
            getWindow().requestFeature(Window.FEATURE_NO_TITLE);
            /** Making this activity, full screen */
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
            //setLayout
            setContentView(R.layout.activity_splash);
}

并将您的主题设置为Theme.AppCompact.NoActionBar