600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Android自定义状态栏颜色 状态栏透明

Android自定义状态栏颜色 状态栏透明

时间:2019-07-24 20:32:51

相关推荐

Android自定义状态栏颜色 状态栏透明

在单个Activity或BaseActivity加入这三个方法即可

/*** colorID 状态栏的颜色,可以是透明* @param colorID*/public void setStatusBarColor(int colorID) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {setStatusBarColorLOLLIPOP(colorID);} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {setTranslucentStatus(true);SystemBarTintManager tintManager = new SystemBarTintManager(this);tintManager.setStatusBarTintEnabled(true);tintManager.setNavigationBarTintEnabled(true);tintManager.setStatusBarTintColor(getResources().getColor(colorID));}}

@TargetApi(21)private void setStatusBarColorLOLLIPOP(int colorID) {Window window = getWindow();window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.setStatusBarColor(getResources().getColor(colorID));window.setNavigationBarColor(Color.TRANSPARENT);}

@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);}

自定义状态栏在一些特定场合会导致一些问题出现,比如windowSoftInputMode失效(登录页软键盘问题)pairscrollview开源控件使用异常(解决scrollview嵌套webView和listview滑动不到底部问题),后面都会介绍解决方法。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。