状态栏导航栏

2018-03-12  本文已影响0人  Sunny君907

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

上一篇下一篇

猜你喜欢

热点阅读