Android Studio 中的每个预览中都会显示闪屏主题

Kir*_*nLy 6 android themes splash-screen

我使用我自己的主题创建了一个 SplashScreen...

<style name="AppTheme.Launcher">
        <item name="android:windowBackground">@drawable/splash_test</item>
</style>
Run Code Online (Sandbox Code Playgroud)

...应用程序加载时应用为应用程序的主主题...

android:theme="@style/AppTheme.Launcher"
Run Code Online (Sandbox Code Playgroud)

...然后在启动的Activity的onCreate中更改为AppTheme:

setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)

一切正常,但我有一个有趣的问题。所有的屏幕预览都使用Launcher主题,现在看起来像:

在此输入图像描述

我就是不能这样工作。=)

我怎样才能避免这个“问题”呢?

Bok*_*ken -1

在您中,@drawable/splash_test您可以为命名空间设置可空可绘制或只是不同的颜色tools

例如,当您有这种类型的启动屏幕(只是颜色+图标)时:

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

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

    <item
        android:width="200dp"
        android:height="150dp"
        android:drawable="@drawable/splash_logo"
        android:gravity="center" />

</layer-list>
Run Code Online (Sandbox Code Playgroud)

drawable您可以在命名空间中设置新的tools

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"      <--- ADDED THERE #1
    android:opacity="opaque">

    <item
        android:drawable="@color/color_background"
        tools:drawable="@color/color_for_preview" />     <--- ADDED THERE #2

    <item
        android:width="200dp"
        android:height="150dp"
        android:drawable="@drawable/splash_logo"
        android:gravity="center"
        tools:drawable="@color/color_for_preview" />     <--- ADDED THERE #3

</layer-list>
Run Code Online (Sandbox Code Playgroud)

所以对于tools像Android Studio Preview这样的,会有color_for_preview颜色。