📜  如何在Android应用程序中更改状态栏的颜色?

📅  最后修改于: 2021-05-10 17:16:21             🧑  作者: Mango

Android中的状态栏是屏幕上醒目的部分,所有通知指示,电池寿命,时间,连接强度以及此处显示的所有内容均如此。 Android用户在使用Android应用程序时可能会多次查看状态栏。状态栏的颜色应遵循布局的颜色组合,这是设计中非常重要的部分。您可以在手机上查看许多android应用程序,并可以看到它们如何根据其主要颜色对其进行了更改。可以使用多种方法来更改状态栏的颜色,但是我们将向您介绍可以在Java或Kotlin中使用的最佳手动选择的两种方法。

方法1:创建一个新主题

您可以在使用Kotlin或Java构建的应用程序中遵循此方法。它将在两者中都起作用。

第1步:打开Android Studio并通过选择一个空活动来启动一个新项目。给它一个选择的名称,然后选择您的语言和API级别。最后单击完成。

步骤2:通过导航res / values / styles.xml来找到一个名为styles.xml的XML文件。

步骤3:通过导航res / values / colors.xml来找到另一个XML文件,然后在此处为状态栏添加要更改的颜色。

步骤4:现在在style.xml文件中,将以下代码添加到标记之前,并更改其颜色作为您的选择。 ColorPrimaryDark始终负责状态栏的颜色。

XML


Java
if (Build.VERSION.SDK_INT >= 21) {
            Window window = this.getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.setStatusBarColor(this.getResources().getColor(R.color.colorPrimaryDark));
        }


Kotlin
if (Build.VERSION.SDK_INT >= 21) {
            val window = this.window
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
            window.statusBarColor = this.resources.getColor(R.color.colorPrimaryDark)
        }


您可以使用android:statusBarColor进行相同操作,但仅在API级别21以上才可以使用。状态栏的ColorPrimaryDark在API级别19中也将不支持。默认情况下,在大多数API级别中,ColorPrimaryDark将是默认颜色statusBarColor,因此最好更改ColorPrimaryDark。

步骤6:现在转到manifest / AndroidManifest.xml,然后在此处搜索要应用该主题或更改状态栏颜色的活动。并添加属性android:theme =” @ style / DemoTheme”。

大功告成!通过在模拟器或物理设备上运行它来检查您的应用程序。

方法2:使用setStatusBarColor方法

此方法只能在以上API级别21中使用。正式地,状态栏颜色不支持低于API级别21。尽管,在这里,我们添加了一个if条件,因为如果您未选择高于或等于API 21的情况,则它将检查android API版本,然后执行代码。不会更改状态栏的颜色(低于API级别21),但其余代码可以正常工作。

第1步:打开android studio并创建一个具有空活动的新项目后。

步骤2:导航到res / values / colors.xml ,并为状态栏添加要更改的颜色。

步骤3:在MainActivity中,将此代码添加到onCreate方法中。不要忘记用colorName替换所需的颜色。

Java

if (Build.VERSION.SDK_INT >= 21) {
            Window window = this.getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.setStatusBarColor(this.getResources().getColor(R.color.colorPrimaryDark));
        }

科特林

if (Build.VERSION.SDK_INT >= 21) {
            val window = this.window
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
            window.statusBarColor = this.resources.getColor(R.color.colorPrimaryDark)
        }

步骤4:尝试在Android模拟器或物理设备上运行您的应用程序。查看更改。

两种方法的输出将相同: