Android 开发相关文章收集码农日记

使用setSystemUiVisibility适配statusb

2016-10-29  本文已影响1426人  leiiiooo

前言

setSystemUiVisibility
4.0之后,官方提供了这个方法,可以改变系统的UI可见性,使用方式如下:

int flag = View.SYSTEM_UI_FLAG_FULLSCREEN;
getWindow().getDecorView().setSystemUiVisibility(flag);

多个值可以使用"|"操作符,比如:

int flag = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
getWindow().getDecorView().setSystemUiVisibility(flag);

常见flag展示效果如下:

SYSTEM_UI_FLAG_FULLSCREEN SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN SYSTEM_UI_FLAG_HIDE_NAVIGATION SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 四个属性

显然,文字被遮盖了我们是不能接受的,此时我们需要另外一个属性,android:fitsSystemWindows=“true”,这个属性表示系统UI(状态栏、导航栏)可见的时候,会给我们的布局加上padding(paddingTop、paddingBottom)属性,这样内容就不会被盖住了。我们在activity的根布局加上这个属性,效果如下:

fitsSystemWindows

以上都是4.1(除了SYSTEM_UI_FLAG_HIDE_NAVIGATION)的属性,观察之后我们发现,不管是那种属性,状态栏和导航栏总是会“遮挡”activity,为了解决这个问题,4.4引入了“全屏沉浸模式”这个概念。

To provide your app with a layout that fills the entire screen, the new SYSTEM_UI_FLAG_IMMERSIVEflag for setSystemUiVisibility()(when combined with SYSTEM_UI_FLAG_HIDE_NAVIGATION) enables a new immersive full-screen mode.

SYSTEM_UI_FLAG_HIDE_NAVIGATION+SYSTEM_UI_FLAG_IMMERSIVE 粘性

关于Translucent Bar

顶部图片
上一篇下一篇

猜你喜欢

热点阅读