gpt4 book ai didi

android - 状态栏字体颜色不会随 android 中的 fragment Darktheme 改变

转载 作者:行者123 更新时间:2023-12-04 15:29:49 24 4
gpt4 key购买 nike

我在我的应用程序 AppTheme 和 DarkTheme 中设置了两个主题

在我的 Apptheme 中状态栏显示正常,但是当我设置 DarkTheme 时它更改状态栏颜色但字体颜色没有改变,我想在 DarkTheme 中将我的状态栏字体颜色更改为白色。

当我在 Activity 中使用 fragment 时,就像在 MainActivity 中使用 MainFragment 那样,我的状态栏颜色不是白色

当我使用 Only Activity 时,它会在状态栏中使用白色字体颜色的相同主题给出正确的结果。

样式.xml


<style name="DarkTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimaryD</item>
<item name="colorPrimaryDark">@color/color_82828C</item>
<item name="colorAccent">@color/color_f85200</item>
<item name="color_background">@color/color_background_night_light_black</item>
<item name="color_background_d">@color/color_background_night_dark_black</item>
<item name="color_icon">@color/color_icon_ffffff</item>
<item name="color_black_white">@color/colorWhite</item>
<item name="color_catlist_bg">@color/color_background_night_dark_black</item>
<item name="color_icon_border">@color/color_icon_border_night</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="colorControlHighlight">@color/ripple_colorD</item>
<item name="android:windowDisablePreview">true</item>
</style>


<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="color_background">@color/color_background_day</item>
<item name="color_background_d">@color/colorWhite</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/color_f85200</item>
<item name="color_icon">@color/color_icon_3b3b3b</item>
<item name="color_black_white">@color/colorBlack</item>
<item name="color_catlist_bg">@color/colorWhite</item>
<item name="color_icon_border">@color/color_icon_border_day</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="colorControlHighlight">@color/ripple_color</item>
<item name="android:windowDisablePreview">true</item>
</style>


1) Apptheme状态栏正常

enter image description here

2) DarkTheme Statusbar字体颜色是黑色我想要白色字体

enter image description here

我已经应用了很多解决方案,但对我的情况不起作用

HomeActivity.java

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.DarkTheme);
setContentView(R.layout.activity_home);
}

带有 fragment 的 Activity 问题,没有 fragment 状态栏字体颜色白色工作。

如果有人有任何解决方案然后给我一个建议,如果在我的情况下它的工作我也正确标记答案。

提前致谢。

最佳答案

如果您将状态栏字体颜色更改为白色,请使用此功能,

对于 Java,

public static void setLightStatusBar(Activity activity){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int flags = activity.getWindow().getDecorView().getSystemUiVisibility();
flags |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
activity.getWindow().getDecorView().setSystemUiVisibility(flags);
}
}

对于 kotlin 使用这个扩展函数,

fun Activity.setLightStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
var flags = window.decorView.systemUiVisibility
flags =
flags and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv()
window.decorView.systemUiVisibility = flags
}
}

如果您想清除灯光状态栏并恢复到以前的状态,请使用此功能,

对于 Java,

 public static void clearLightStatusBar(Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Window window = activity.getWindow();
window.setStatusBarColor(ContextCompat
.getColor(activity, R.color.colorPrimaryDark));
}
}

对于 Kotlin,

fun Activity.clearLightStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.statusBarColor = ContextCompat
.getColor(this, R.color.colorPrimaryDark)
}
}

关于android - 状态栏字体颜色不会随 android 中的 fragment Darktheme 改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61452447/

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