我有一个 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);
您只需要在 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>