gpt4 book ai didi

android - 无法使用 MaterialDrawer 库更改 StatusBar 颜色

转载 作者:行者123 更新时间:2023-11-29 17:01:09 28 4
gpt4 key购买 nike

我试图以编程方式更改 StatusBar 颜色,但没有成功。我正在使用 MaterialDrawer用于创建抽屉导航的库。

尝试了我在互联网上找到的不同解决方案,但没有一个有效,状态栏总是显示 primaryDark

以编程方式尝试:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(Color.BLUE);
}

还尝试了主题:

if (dark) 
setTheme(R.style.AppTheme_Dark_NoActionBar);
else
setTheme(R.style.AppTheme_NoActionBar);


<style name="AppTheme.Dark.NoActionBar" parent="MaterialDrawerTheme">
<item name="android:colorPrimary" tools:targetApi="lollipop">#ffffff</item>
<item name="android:colorPrimaryDark" tools:targetApi="lollipop">#cfcfcf</item>
<item name="android:statusBarColor">#cfcfcf</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:colorAccent" tools:targetApi="lollipop">@color/md_black_1000</item>
<item name="android:windowContentTransitions" tools:targetApi="lollipop">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="drawerArrowStyle">@style/MaterialDrawer.DrawerArrowStyle.Black</item>
<item name="android:datePickerDialogTheme">@style/DatePickerDialogThemeDark</item>
<item name="android:timePickerDialogTheme">@style/DatePickerDialogThemeDark</item>
</style>

<style name="AppTheme.NoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="android:colorAccent" tools:targetApi="lollipop">@color/primary</item>
<item name="windowNoTitle">true</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:datePickerDialogTheme">@style/DatePickerDialogThemeLight</item>
<item name="android:timePickerDialogTheme">@style/DatePickerDialogThemeLight</item>
</style>

<style name="AppTheme" parent="MaterialDrawerTheme.Light">
<item name="android:colorPrimary" tools:targetApi="lollipop">@color/colorPrimary</item>
<item name="android:colorPrimaryDark" tools:targetApi="lollipop">@color/colorPrimaryDark
</item>
<item name="android:colorAccent" tools:targetApi="lollipop">@color/md_blue_300</item>
<item name="android:windowContentTransitions" tools:targetApi="lollipop">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="lollipop">true</item>
<item name="drawerArrowStyle">@style/MaterialDrawer.DrawerArrowStyle</item>
</style>

最后尝试使用 MaterialDrawer 库的这段代码:

drawer.getDrawerLayout().setStatusBarBackgroundColor(color);

drawerDrawerBuilder 的结果。该应用程序有 2 种原色,具体取决于用户在登录/注册中输入的一些变量。这种颜色是蓝色和白色。该应用程序运行良好,除了 StatusBar 仅使用 primaryDark 着色,即使我使用上面发布的代码也是如此。我可以更改颜色的唯一模式是修改 colorPrimary 或将其放入颜色中:

<color name="materialize_primary_dark">@color/md_red_500</color>

但它会像 primaryDark 一样改变颜色,我必须将其更改为白色模式的白色和蓝色模式的蓝色。

谢谢。

最佳答案

只要您在 View 的根目录中有一个 DrawerLayout,它有 fitsSystemWindows 标志,StatusBar 颜色将由此 View “稀松布”

因此在您的情况下,您可以执行以下操作来动态调整 StatusBar 的颜色:

public void setStatusBarColor(@ColorInt int color){
drawer.getDrawerLayout().setStatusBarBackgroundColor(color);
}

关于android - 无法使用 MaterialDrawer 库更改 StatusBar 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42951527/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com