为了账号安全,请及时绑定邮箱和手机立即绑定

将状态栏更改为白色

将状态栏更改为白色

UYOU 2021-11-11 13:18:52
我正在尝试仅在一项活动中将状态栏颜色更改为白色,但图标几乎不显示:我正在使用此代码: Window window = getWindow(); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT);我无法更改 ColorPrimaryDark,因为我已经为所有应用程序设置了一种颜色。提前致谢。编辑我在评论一个初学者的错误。这有一个非常简单的解决方案,只需为清单文件中的此活动设置一个主题:android:theme="@style/Theme.AppCompat.Light.NoActionBar"正如@shahab 所说,我的 Activity 上的这个 java 代码是:if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {    Window window = getWindow();    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);    window.setStatusBarColor(Color.TRANSPARENT);}
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

更改状态栏颜色仅适用于棒棒糖上方的 android


1.您可以通过此行以编程方式更改状态栏颜色:


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

    getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.your_color));

}

2.您可以使用平滑过渡动画来做到这一点:


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

    int startColor = getWindow().getStatusBarColor();

    int endColor = ContextCompat.getColor(context, R.color.your_color);

    ObjectAnimator.ofArgb(getWindow(), "statusBarColor", startColor, endColor).start();

}

3.或者您可以将其添加到 values/styles.xml 文件中的主题样式中。item colorPrimaryDark 将用于您的应用程序状态栏颜色


<item name="colorPrimaryDark">@color/colorPrimaryDark</item>

但是要将状态栏图标颜色更改为深色,您可以使用 SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 标志,该标志可用于 M 以上的 android


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

}

或将其添加到您的主题样式 xml:


<item name="android:windowLightStatusBar">true</item>


查看完整回答
反对 回复 2021-11-11
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

onCreate()方法中使用它:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

这适用于 API 23+。


查看完整回答
反对 回复 2021-11-11
?
狐的传说

TA贡献1804条经验 获得超3个赞

Window window = getWindow();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

    window.setStatusBarColor(Color.TRANSPARENT);

}


else {

    window.setStatusBarColor(Color.WHITE);

}


查看完整回答
反对 回复 2021-11-11
  • 3 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信