android 在状态栏显示内容以及更改状态栏颜色

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的颜色而已。  
		虽说没什么意义但至少让人能明白其中的意思。   
 
  
		
		新手记录心得, 大佬略过。。。
   	





猜你喜欢

转载自blog.csdn.net/qq_36043263/article/details/78682645