Android 状态栏的设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 状态栏的设置相关的知识,希望对你有一定的参考价值。

参考技术A 先看一下默认的情况:

蓝色一行是自定义的导航栏,
黑色的是自带的 ActionBar ,也就是我们说的标题栏。

首先一般都会选择去掉 ActionBar:

隐藏 actionbar 有很多种方法

这种方法是全局中隐藏了标题栏。

其实在我的手机更新系统之前,隐藏了 ActionBar 后,状态栏和自定义的导航栏颜色是相匹配的,不知道什么原因现在默认为灰色了。

上面使用的主题虽然隐藏了标题栏,但是和我们自定义的导航栏不搭,
这时候我们可以选择用自定义的主题(Theme),来改变状态栏:

在 values 下的 style.xml 中添加

或者在 onCreate 中:

上面两行一般不一起设置,二选一即可。
第一行设置导航栏为透明,第二行将导航栏隐藏。
不推荐第二种做法,如果一个 Activity 中设置了隐藏导航栏而另一个 Activity 没有,那两者切换的时候会不好看。

融合的效果:

状态栏和 app 顶部相融合了,如果标题栏是一张图片效果会更好。
这里还有一个问题,状态栏的文字和我们导航栏的文字重叠了,
我们可以选择在布局文件的根元素中添加:

让布局为状态栏留出空间,就不会出现上面这张被状态栏遮挡的情况。

如果像上面的例子是一样的纯色的标题栏,我们可以选择直接改变状态栏的颜色解决问题。

或者:

不显示时间、电量等信息和文字:

同要可以用修改 Theme 来实现:

或者在 OnCreat() 中加入,还是要注意加在 setContentView() 的前面

如果想让图片全屏要注意设置为:

关于状态栏与导航栏的设置及自定义

关于状态栏和导航栏遇到的设置问题

1:statusBar字体为白色

在plist里面设置View controller-based status bar appearance 为 NO;设置statusBarStyle 为 UIStatusBarStyleLightContent

2:设置statusBar和navigationbar为一体

[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"bg_navbar.png"] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault];

3:tabBarItem被选中没效果,需要调用sdk7中的方法:

//兼容ios7以前
[viewController.tabBarItem setFinishedSelectedImage:actionMenu.selectedIcon withFinishedUnselectedImage:actionMenu.icon];
//ios7的方法
viewController.tabBarItem.selectedImage = actionMenu.selectedIcon;

4:刷新状态栏statusBar

[self setNeedsStatusBarAppearanceUpdate]

5:navigationbar上面的BarButtonItem字看不见问题,backBarItem箭头没有,则需要

//ios7设置BarButtonItem字体颜色,则会显示出来,不包括返回箭头
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, 0) forBarMetrics:UIBarMetricsDefault];
//设置BarButtonItem颜色,包括返回箭头
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

6:取消ios7自带手势,比如navigationcontroller的右滑返回

self.navigationController.interactivePopGestureRecognizer.enabled = NO ;

以上是关于Android 状态栏的设置的主要内容,如果未能解决你的问题,请参考以下文章

Android如何设置顶部状态栏颜色(主题)

关于 Android 状态栏的适配总结

如何在启动阶段设置状态栏的背景颜色[重复]

Android设置状态栏颜色和状态栏文字、图标颜色

沉浸式状态栏的三种实现方式

Android去除状态栏的方法汇总