700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android 隐藏状态栏 不起作用 Android 状态栏的隐藏和显示

android 隐藏状态栏 不起作用 Android 状态栏的隐藏和显示

时间:2020-04-16 21:06:28

相关推荐

android 隐藏状态栏 不起作用 Android 状态栏的隐藏和显示

在Android应用中我们可能会碰到这样的需求,隐藏状态栏或者状态栏和应用背景一样的颜色,比如下图:

状态栏和背景一个颜色

Android应用程序的界面上系统元素构成如下图:

在4.1之后的系统,隐藏状态栏可以设置DecorView的option参数。关于DecorView,这里也简单介绍下,先用一张图看下它的位置关系

也就是说DecorView是Activity窗口的根视图。每个activity都对应一个窗口window,这个窗口是PhoneWindow的实例,PhoneWindow对应的布局是DecirView,是一个FrameLayout,DecorView内部又分为两部分,一部分是ActionBar,另一部分是ContentParent,即activity在setContentView对应的布局。

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

View decorView = getWindow().getDecorView();

int option = View.SYSTEM_UI_FLAG_FULLSCREEN;

decorView.setSystemUiVisibility(option);

ActionBar actionBar = getSupportActionBar();

actionBar.hide();

}

}

SYSTEM_UI_FLAG_FULLSCREEN的作用就是隐藏状态栏,点击屏幕的时候不会出现,下拉的时候会出现,相应的字段还有:

SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION将布局内容拓展到导航栏的后面

虽说这才是正统的沉浸式含义,但有些朋友可能想实现的就是饿了么那样的状态栏效果,而不是直接把整个系统状态栏给隐藏掉,那么又该如何实现呢

这个状态栏隐藏了,但是想像饿了么那样设置成透明效果,应该如何做呢?只要将option改为如下就可以了int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;

同时 将

StatusBar颜色设置为透明的

getWindow().setStatusBarColor(Color.TRANSPARENT);

状态栏透明

注意两个Flag必须要结合在一起使用,表示会让应用的主体内容占用系统状态栏的空间。

另外看下底下的导航栏如何隐藏,其实也是使用了不同的UI Flag而已int option = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

| View.SYSTEM_UI_FLAG_FULLSCREEN;

这里我们同时使用了SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI_FLAG_FULLSCREEN,这样就可以将状态栏和导航栏同时隐藏了。现在重新运行一下程序,效果如图所示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。