Mr查

博客园 首页 新随笔 联系 订阅 管理

1.在根部局给一个id,然后直接设置就行了layout.setSystemUiVisibility(View.INVISIBLE);

状态栏就没有了。

2.如果你只是想改变状态栏颜色的也可以

//5.0以前这样
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT&&Build.VERSION.SDK_INT<Build.VERSION_CODES.LOLLIPOP) {
   setTranslucentStatus(true);
   SystemBarTintManager tintManager = new SystemBarTintManager(this);
   tintManager.setStatusBarTintEnabled(true);
   tintManager.setStatusBarTintResource(R.color.top_bg_color);//通知栏所需颜色
  }
   private void setTranslucentStatus(boolean on) {
   Window win = getWindow();
   WindowManager.LayoutParams winParams = win.getAttributes();
   final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
   if (on) {
      winParams.flags |= bits;
   } else {
      winParams.flags &= ~bits;
   }
   win.setAttributes(winParams);
}
   //5.0以后这样
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
   Window window = getWindow();
   window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
   window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
   window.setStatusBarColor(getResources().getColor(R.color.top_bg_color));
}


3.做完上面的步骤后,有些小伙伴会发现,自己的顶部栏会被覆盖或者有些重叠!如图:

所以我们还需要设置一下样式:

<!-- 去掉tab顶部的黑边 -->
<style name="no_title" parent="Theme.AppCompat.Light.NoActionBar">

<!-- 沉浸式状态栏 -->
<item name="android:fitsSystemWindows">true</item>
<item name="android:clipToPadding">false</item>
</style>
然后去AndroidManifest.xml配置对应的activity的theme就可以了


View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性。

setSystemUiVisibility方法传入的实参分析:

 

   setSystemUiVisibility(int visibility)方法可传入的实参为:

    1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,

Activity不全屏显示(恢复到有状态的正常情况)。

    2. View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。

    3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。

    4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。

    5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

    6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

    7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。

    8. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏

 

posted on 2017-11-01 15:53  Mr查  阅读(8464)  评论(0编辑  收藏  举报