java - 将状态栏更改为白色

标签 java android statusbar

我试图仅在一项 Activity 中将状态栏颜色更改为白色,但图标几乎不显示:

enter image description here

我正在使用此代码:

 Window window = getWindow();
 window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
 window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
 window.setStatusBarColor(Color.TRANSPARENT);

我无法更改 ColorPrimaryDark,因为我已经为所有应用程序设置了一种颜色。

提前致谢。

编辑

我正在评论一个初学者错误。这有一个非常简单的解决方案,只需在 list 文件上为此 Activity 设置一个主题:

android:theme="@style/Theme.AppCompat.Light.NoActionBar"

我的 Activity 上的这个 java 代码,正如 @shahab 所说:

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);
}

最佳答案

改变状态栏颜色仅适用于 Lollipop 以上的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>
<小时/>

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

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>

关于java - 将状态栏更改为白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52748074/

相关文章:

android - 登录服务器端检查

android - Material style navigation drawer,状态栏颜色太暗

ios - UIImagePickerController 的状态栏颜色

java - LeanFT 并在多个浏览器中进行测试

java - 加载其他数据库中的元素(Hibernate/Jpa/Spring)

Java - 从反射调用的构造函数中捕获异常

Android SQLite 大量行

android - VirtualBox Linux 无法挂载安卓设备

objective-c - NSStatusItem 始终保留?

java - 当两个不相关的表都有复合主键时,Hibernate 连接两个表