美文网首页
Android 状态栏和虚拟导航栏颜色修改

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

作者: 海芋洋芋 | 来源:发表于2017-11-30 17:59 被阅读129次

代码参考自:这个大神

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高度

相关文章

网友评论

      本文标题:Android 状态栏和虚拟导航栏颜色修改

      本文链接:https://www.haomeiwen.com/subject/zktbbxtx.html