欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android修改状态栏的颜色等问题

程序员文章站 2022-12-25 17:51:02
android修改状态栏的颜色等问题。 protected boolean usethemestatusbarcolor = true;//是否使用特殊的标题栏背景颜色,android5.0以上...

android修改状态栏的颜色等问题。

protected boolean usethemestatusbarcolor = true;//是否使用特殊的标题栏背景颜色,android5.0以上可以设置状态栏背景色,如果不使用则使用透明色值
protected boolean usestatusbarcolor = false;//是否使用状态栏文字和图标为暗色,如果状态栏采用了白色系,则需要使状态栏和图标为暗色,android6.0以上可以设置

@override
protected void oncreate(@nullable bundle savedinstancestate) {
 super.oncreate(savedinstancestate);
 setstatusbar();
}

private void setstatusbar() {
 if (build.version.sdk_int >= build.version_codes.lollipop) { //5.0以上
  view decorview = getwindow().getdecorview();
  int option = view.system_ui_flag_layout_fullscreen //activity全屏显示,且状态栏被覆盖掉
 | view.system_ui_flag_layout_stable;  //system_ui_flag_layout_stable
  decorview.setsystemuivisibility(option);
  if (usethemestatusbarcolor) {
getwindow().setstatusbarcolor(getresources().getcolor(r.color.white));
  } else {
getwindow().setstatusbarcolor(color.transparent);
  }

 } else if (build.version.sdk_int >= build.version_codes.kitkat) {  //44-5.0
  windowmanager.layoutparams layoutparams = getwindow().getattributes();
  layoutparams.flags = (windowmanager.layoutparams.flag_translucent_status | layoutparams.flags);  //状态栏透明
 }
 if (build.version.sdk_int >= build.version_codes.m && !usestatusbarcolor) {
  //6.0以上设置对文字状态栏设置为黑色,因为之前5.0我们设置为白色。
  getwindow().getdecorview().setsystemuivisibility(view.system_ui_flag_layout_fullscreen | view.system_ui_flag_light_status_bar);
 }
}

上边是改变4.0到6.0的状态栏颜色。

改了之后可能会出现顶部导航栏被顶部导航栏盖住一部分的情况

activity在你的xml文件中设置

android:fitssystemwindows="true"

?fragment的话在文中,

@override
public void onhiddenchanged(boolean hidden) {
 if (view != null) {
  if (hidden) {
view.setfitssystemwindows(false);
  } else {
view.setfitssystemwindows(true);
  }
  view.requestapplyinsets();
 }

 super.onhiddenchanged(hidden);
}

ok了就。、。、、、、、、

第一个默认显示的fragment可能还会出现被盖住的情况,只要在ragment所在activity所在布局的xml中添加

android:fitssystemwindows="true"
就ok了、、、、