首页 > 代码库 > 自定义状态栏背景(status bar)
自定义状态栏背景(status bar)
公司大设计师只出iOS设计图。新的iOS系统的状态栏(status bar,就是显示时间、电量那个)是透明的,Android 4.4 (Kitkat,api 19)也添加了自定义 status bar 和 navigation bar 的一些api,可以实现同样的效果。
---
github上有 SystemBarTint 可以使用,但是很多功能用不到,所以自己实现了下。
---
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { setStatusBarColor(android.R.color.transparent); } } /** * 使status bar 和 navigation bar 透明 */ private void setStatusBarColor(int colorId) { int flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION | WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; getWindow().addFlags(flags); int statusBarHeight = getStatusBarHeight(this); View view = new View(this); view.setBackgroundResource(colorId); ViewGroup parent = (ViewGroup) getWindow().getDecorView().findViewById(android.R.id.content);//parent是setContentView(content)中content的父view parent.addView(view, ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight); parent.getChildAt(0).setPadding(0, statusBarHeight, 0, 0); } private int getStatusBarHeight(Context context) { int id = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); int dimen = 0; if (id > 0) dimen = getResources().getDimensionPixelSize(id); return dimen; } }
---
DecorView的相关知识补充(Debug模式下一点点查看出来的):
自定义状态栏背景(status bar)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。