状态栏导航栏
1.colorPrimary 应用的主要色调,actionBar默认使用该颜色,Toolbar导航栏的底色
2.colorPrimaryDark 应用的主要暗色调,statusBarColor默认使用该颜色
3.statusBarColor 状态栏颜色,默认使用colorPrimaryDark
4.windowBackground 窗口背景颜色
5.navigationBarColor 底部栏颜色
6.colorForeground 应用的前景色,ListView的分割线,switch滑动区默认使用该颜色
7.colorBackground 应用的背景色,popMenu的背景默认使用该颜色
8.colorAccent CheckBox,RadioButton,SwitchCompat等一般控件的选中效果默认采用该颜色
9.colorControlNormal CheckBox,RadioButton,SwitchCompat等默认状态的颜色。
10.colorControlHighlight 控件按压时的色调
11.colorControlActivated 控件选中时的颜色,默认使用colorAccent
12.colorButtonNormal 默认按钮的背景颜色
13.editTextColor:默认EditView输入框字体的颜色。
14.textColor Button,textView的文字颜色
15.textColorPrimaryDisableOnly RadioButton checkbox等控件的文字
16.textColorPrimary 应用的主要文字颜色,actionBar的标题文字默认使用该颜色
17.colorSwitchThumbNormal: switch thumbs 默认状态的颜色. (switch off)
private void hideNavigationBar() {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
}
private void showNavigationBar() {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
decorView.setSystemUiVisibility(uiOptions);
}
相关:
SYSTEM_UI_FLAG_VISIBLE——显示状态栏和导航栏
SYSTEM_UI_FLAG_LOW_PROFILE——此模式下,状态栏的图标可能是暗的
SYSTEM_UI_FLAG_HIDE_NAVIGATION——隐藏导航栏
SYSTEM_UI_FLAG_FULLSCREEN——全屏,隐藏状态栏和导航栏
SYSTEM_UI_FLAG_LAYOUT_STABLE
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN——全屏,隐藏导航栏,状态栏浮在布局上。
SYSTEM_UI_FLAG_IMMERSIVE——沉浸式:半透明的状态栏和导航栏
SYSTEM_UI_FLAG_IMMERSIVE_STICKY——粘性沉浸式
二、状态栏:
privatevoid setStatusBarVisible(boolean show) {
if (show) {
int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
uiFlags |=0x00001000;
getWindow().getDecorView().setSystemUiVisibility(uiFlags);
}else {
int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN;
uiFlags |=0x00001000;
getWindow().getDecorView().setSystemUiVisibility(uiFlags);
}
}
三、导航栏和状态栏
privatevoid setSystemUIVisible(boolean show) {
if (show) {
int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
uiFlags |=0x00001000;
getWindow().getDecorView().setSystemUiVisibility(uiFlags);
}else {
int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN;
uiFlags |=0x00001000;
getWindow().getDecorView().setSystemUiVisibility(uiFlags);
}
}
由于与API
19设置状态栏半透明并添加一个View的实现方式不同,这里是直接设置状态栏的颜色的,所以如果我们的状态栏被设为白色的话,上面同样白色的系统状态就看不到了。不过,6.0的API新增了一个属性来解决这一问题。即,如果我们设置的状态栏颜色是接近于白色的话,可以在主题中添加以下属性:
item name="android:windowLightStatusBar" true item
这样,系统状态的那些文字图标就会变成黑色了,如一开始我们所看到的第三张图。
通过JAVA代码来设置的话如下:
View decor = window.getDecorView();int ui = decor.getSystemUiVisibility();
if (lightStatusBar) {
ui |=View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
} else {
ui &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
decor.setSystemUiVisibility(ui);