您的位置:首页 > 移动开发 > Android开发

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

2017-10-19 15:31 323 查看
谷歌在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"这样就可以达到预期的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: