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

 

 
 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值