TWO:状态栏显示内容:
当一个Activity创建时也随之分配一个Windows()对象所有的VIew将会依赖与此窗口显示,而程序最底层的VIew 则是
DecorView
这个
DecorView
通过
getWindow().getDecorView()方法获得
,DecorView在网上查找相关信息得知它最终分为两部分一部分FrameLayout用来显示title(标题栏)与Status(状态栏),另一部分则是我们的ConTentView。为了方便理解我将其视为三个FrameLayout。
好了
DecorView
暂时到这
。
从上述可支Status可显示内容就是让自己消失,我在网上看了很多实例大多数都没有用,自己偶尔发现了用一行代码就可以实现,来看看
getWindow().addFlags(WindowManager.LayoutParams.
FLAG_TRANSLUCENT_STATUS);
FLAG_TRANSLUCENT_STATUS:就是让状态栏为透明,属于窗口级别属性。我们可以理解为remove自己的FrameLayout。
放在
setContentView()之前较为直观,方便起见加上以下代码
getSupportActionBar().hide(); 这时候DecorView中第一个FrameLayout彻底让位了我们的ContentView会显示全屏。
但是即使不调用hide()代码我们的View也可显示在Status只是会被titile遮挡,笔者表示不理解。但是我们的问题解决了,不深究。
同时提醒一下在style属性里直接用
<item name="android:statusBarColor">@android:color/transparent</item> 并不能使Status消失。
好了 ,第一个环节结束。
TWO:更改状态栏显示颜色:
方法一: 这里我们用到上述
<item name="android:statusBarColor">@android:color/transparent</item>
@android:color/transparent(透明) 更换为其他颜色值即可。
方法二:
getWindow().setStatusBarColor(Color.XXX); 调用即可更改颜色
方法三:
getWindow().getDecorView().setBackgroundColor(Color.XXX);
该代码之前还需调用
<item name="android:statusBarColor">@android:color/transparent</item> 才能更改。
实则是将Framelayout背景色改为透明然后显示DecorView的颜色而已。
虽说没什么意义但至少让人能明白其中的意思。
新手记录心得, 大佬略过。。。