android应用中状态栏颜色和标题栏保持一致

谷歌在4.4之后允许开发者自定义状态栏的颜色,这是不错的体验。这里只谈代码的实现方式,配置到BaseActivity里,这样自定义的activity在继承BaseActivity后就都可以实现这样的效果了。


创建BaseActivity之后,在onCreate()方法中,setContentView()方法前做如下处理:

Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {    
           setTranslucentStatus(true);    
           SystemBarTintManager tintManager = new SystemBarTintManager(this);    
           tintManager.setStatusBarTintEnabled(true);    
           tintManager.setStatusBarTintResource(R.color.top_bg_color);//通知栏所需颜色  
       }    
    setContentView(R.layout.main_activity);  
}  
  
@TargetApi(19)     
   private void setTranslucentStatus(boolean on) {    
       Window win = getWindow();    
       WindowManager.LayoutParams winParams = win.getAttributes();    
       final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;    
       if (on) {    
           winParams.flags |= bits;    
       } else {    
           winParams.flags &= ~bits;    
       }    
       win.setAttributes(winParams);    
   }  

SystemBarTintManager需要引用三方的类库,在AS中可以直接输入SystemBarInt搜索。实现效果如图:

但是实际上标题栏被提了上去,APP界面全屏了,状态啦遮挡了一部分APP的界面,所以还要做如下处理:在Activity布局文件的最外层添加属性:

android:fitsSystemWindows="true"
这样就可以达到预期的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值