Android 设置状态栏颜色、文本颜色等
时间: 2023-10-03 21:11:13 浏览: 90
android 状态栏颜色设置
1. 设置状态栏颜色
在Android 5.0及以上版本中,可以使用以下代码设置状态栏颜色:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(ContextCompat.getColor(this, R.color.status_bar_color));
}
```
其中,`R.color.status_bar_color`是状态栏颜色的资源ID。
2. 设置状态栏文本颜色
在Android 6.0及以上版本中,可以使用以下代码设置状态栏文本颜色:
```java
// 设置状态栏文本颜色为深色
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// 设置状态栏为透明,并在布局中添加一个与状态栏高度相同的View,设置View的背景色为深色
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
View statusBar = findViewById(R.id.status_bar);
if (statusBar != null) {
statusBar.setBackgroundColor(ContextCompat.getColor(this, R.color.status_bar_text_color));
}
}
```
其中,`R.color.status_bar_text_color`是状态栏文本颜色的资源ID。
3. 设置状态栏透明
如果需要设置状态栏透明,可以使用以下代码:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
}
```
其中,`Color.TRANSPARENT`表示透明颜色。
阅读全文