Android 修改状态栏的颜色等问题.
- protected boolean useThemestatusBarColor = true;// 是否使用特殊的标题栏背景颜色, android5.0 以上可以设置状态栏背景色, 如果不使用则使用透明色值
- protected boolean useStatusBarColor = false;// 是否使用状态栏文字和图标为暗色, 如果状态栏采用了白色系, 则需要使状态栏和图标为暗色, android6.0 以上可以设置
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setStatusBar();
- }
- private void setStatusBar() {
- if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.LOLLIPOP) { //5.0 以上
- View DecorView = getWindow().getDecorView();
- int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //Activity 全屏显示, 且状态栏被覆盖掉
- | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; //SYSTEM_UI_FLAG_LAYOUT_STABLE
- DecorView.setSystemUiVisibility(option);
- if (useThemestatusBarColor) {
- getWindow().setStatusBarColor(getResources().getColor(R.color.white));
- } else {
- getWindow().setStatusBarColor(Color.TRANSPARENT);
- }
- } else if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.KITKAT) { //44-5.0
- WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
- layoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | layoutParams.flags); // 状态栏透明
- }
- if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.M && !useStatusBarColor) {
- //6.0 以上设置对文字状态栏设置为黑色, 因为之前 5.0 我们设置为白色.
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
- }
- }
上边是改变 4.0 到 6.0 的状态栏颜色.
改了之后可能会出现顶部导航栏被顶部导航栏盖住一部分的情况
activity 在你的 xml 文件中设置
Android:fitsSystemWindows="true"
?fragment 的话在文中,
- @Override
- public void onHiddenChanged(boolean hidden) {
- if (view != null) {
- if (hidden) {
- view.setFitsSystemWindows(false);
- } else {
- view.setFitsSystemWindows(true);
- }
- view.requestApplyInsets();
- }
- super.onHiddenChanged(hidden);
- }
OK 了就.,.,,,,,,
第一个默认显示的 fragment 可能还会出现被盖住的情况, 只要在 ragment 所在 activity 所在布局的 xml 中添加
Android:fitsSystemWindows="true"
就 ok 了,,,,
来源: https://www.2cto.com/kf/201806/757084.html