设置状态栏背景色:
getWindow().setStatusBarColor(getColor(R.color.D1));
通过这个设置可以修改状态栏背景色,但是如果设置黑色或者白色会有字体颜色和背景相同导致看不见文字的问题,下面设置字体颜色可以解决这个问题
设置状态栏字体颜色
安卓并不提供修改状态栏字体的sdk,系统根据页面风格自动处理字体颜色(前提:需要设置成NoActionBar,否则状态栏字体不随页面风格改变),所以我们可以通过设置页面风格简介设置状态栏字体颜色
Theme.AppCompat.NoActionBar
此时状态栏是白色字体
Theme.AppCompat.Light.NoActionBar
此时状态栏是黑色字体
我们也可以在代码中动态的改:
亮色模式:SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
浅色模式:
SYSTEM_UI_FLAG_VISIBLE
//设置字体黑色
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)
//设置字体白色
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE)
悬浮在内容区之上or顶部(配合设置透明色可实现沉浸式)
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
沉浸状态栏
<color name="transparent">#00000000</color>
白色字体沉浸:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
getWindow().setStatusBarColor(getColor(R.color.transparent));
}
黑色字体沉浸:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
getWindow().setStatusBarColor(getColor(R.color.transparent));
}