在 Android 13 上使状态栏透明但保留彩色导航栏

问题描述 投票:0回答:1

我有一个 Cordova 应用程序,我需要将状态栏设置为透明,并将导航栏设置为特定颜色。

我已经实现了第一件事,但是在 Android 13 中,statusBar 也变得透明,并且 webview 隐藏在下面。为了解决这个问题,我添加了一个填充,以便可以在 CordovaActivity.java 中看到导航栏:

WindowCompat.setDecorFitsSystemWindows(window, false);                          ViewCompat.setOnApplyWindowInsetsListener(window.getDecorView(), (v, insets) -> {
                        int marginBottom = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom;
                        v.setPadding(0, 0, 0, marginBottom);
                        return insets;
                      });

但是这样做我失去了导航栏的颜色......

如何在 Android 13 中使状态栏透明并使导航栏具有特定颜色?

我尝试如下设置导航栏的颜色并添加和删除标志,但没有效果:

window.setNavigationBarColor(Color.RED);

android cordova android-13
1个回答
0
投票

您只需要在 Activity 的 onCreate 中执行第一行:

WindowCompat.setDecorFitsSystemWindows(getWindow(), false);

然后在您的

res/values/themes
中修改您的主题以包含这些样式项:

<item name="android:statusBarColor">@color/transparent</item>
<item name="android:navigationBarColor">#ff0000</item>

或者如果您使用闪屏插件:

<?xml version='1.0' encoding='utf-8'?>
<resources>
    <style name="Theme.App.SplashScreen" parent="Theme.SplashScreen.IconBackground">
        <!-- ... -->
        <item name="postSplashScreenTheme">@style/MyTheme</item>
    </style>

    <style name="MyTheme" parent="Theme.AppCompat.NoActionBar">
      <item name="android:statusBarColor">@color/transparent</item>
      <item name="android:navigationBarColor">#ff0000</item>
    </style>
</resources>

© www.soinside.com 2019 - 2024. All rights reserved.