Android 状态栏和虚拟导航栏颜色修改

代码参考自:这个大神

Android5.0以上实现:(两种方式)

实现方式一:

修改style文件夹中关于状态栏和导航栏的设置

在src-->main-->res文件夹下创建,values-v21目录,在其中创建styles文件夹,并在其中加入以下代码:

状态栏:

<item name="android:statusBarColor">@color/colorStatusBarColor</item>

虚拟导航栏:

<item name="android:navigationBarColor">@color/colorNavigationBarColor</item>

实现方式二:

代码中进行设置(推荐)

在setConetntView(View);之前加入下面代码

//代码解释:如果编译版本的当前版本号大于等于Android5.0,则使用下面的方法

if(Build.VERSION.SDK__INT>=BUILD.VERSION_CODES.LOLLTPOP){

        getWindow().setStatusBar(getResource().getColor(R.color.statusbarcolor));

               getWindow().setNavigationBarColor(getResource().getColor(R.color.navigitionbarcolor));

}


Android4.4--5.0中实现(两种方式)

实现方式一:

修改style文件夹中关于状态栏和导航栏的设置

在src-->main-->res文件夹下创建,values-v19目录,在其中创建styles文件夹,并在其中加入以下代码:

<item name="android:windowTranslucentStatus">true</item>

<item name="android:windowTranslucentNavigation">true</item>

实现方式二:

代码中进行设置(推荐)

在setConetntView(View);之前加入下面代码

//代码解释:如果当前版本大于等于4.4,并且当前版本小于5.0,证明是在4.4-5.0之间

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT&&Build.VERSION.SDK_I

 NT<Build.VERSION_CODES.LOLLIPOP){

            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_

            STATUS);

            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_

            NAVIGGATION);

}

在4.4到5.0之间可能会出现错位的情况:

解决方式:

1.在ToolBar设置fitsSystemWindows为true

2.在根布局设置fitsSystemWindows为true

3.动态获取ToolBar高度并设置ToolBar高度

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容