android状态栏操作的各种方式
Posted 汤米粥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android状态栏操作的各种方式相关的知识,希望对你有一定的参考价值。
android 默认的状态栏是黑底白字,白色图标的。但是如果我们需要白底黑字,黑色图标,该怎么办呢?最简单的办法是在AndroidManifest.xml 中给 <application>设置theme:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimaryWhite</item> <item name="colorPrimaryDark">@color/colorPrimaryDarkWhite</item> <item name="colorAccent">@color/colorAccentWhite</item> <item name="android:actionBarSize">@dimen/dimen_toolbar_height</item> <item name="android:windowLightStatusBar">true</item> <!-- 上面的<item name="android:windowLightStatusBar">true</item>就是使用亮色的状态栏 --> </style>
其中最重要的一行代码就是: <item name="android:windowLightStatusBar">true</item>
也可以在代码中动态设置状态栏属性,提供一些方法:
//设置状态栏透明背景
fun setStatusBarTransparent(activity: Activity)
if (isFromM())
activity.window.statusBarColor = Color.TRANSPARENT
//设置状态栏背景颜色
fun setStatusBarBgColor(activity: Activity, @ColorInt color: Int)
if (isFromM())
activity.window.statusBarColor = color
//设置状态栏图标,文字颜色(深色模式或浅色模式)
fun setStatusBarIconColor(activity: Activity, blackIcon: Boolean)
var option = 0;
if (blackIcon)
option = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR //白底黑字
else
option = View.SYSTEM_UI_FLAG_VISIBLE; //默认,黑底白字
activity.window.decorView.systemUiVisibility = option
//设置状态栏占不占高度,浮于页面上方
fun setStatusBarFullScreen(activity: Activity, isFloat: Boolean)
val decorView = activity.window.decorView
val option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
decorView.systemUiVisibility = option
//同时设置状态栏不占高度,和图标颜色
/**
* 是否全屏 状态栏浮于上面
* blackIcon 黑色图标
*/
fun setStatusBarFullScreen(activity: Activity, isFull: Boolean, blackIcon: Boolean)
val decorView = activity.window.decorView
var option = 0;
if (isFull)
if (blackIcon)
option =
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
else
option =
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_VISIBLE
else
if (blackIcon)
option = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
else
option = View.SYSTEM_UI_FLAG_VISIBLE
decorView.systemUiVisibility = option
setSystemUiVisibility(int visibility)传入的实参类型如下:
1.View.SYSTEM_UI_FLAG_VISIBLE :状态栏和Activity共存,Activity不全屏显示。也就是应用平常的显示画面
2.View.SYSTEM_UI_FLAG_FULLSCREEN :Activity全屏显示,且状态栏被覆盖掉
3. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN :Activity全屏显示,但是状态栏不会被覆盖掉,而是正常显示,只是Activity顶端布 局会被覆盖住
4.View.INVISIBLE : Activity全屏显示,隐藏状态栏
以上是关于android状态栏操作的各种方式的主要内容,如果未能解决你的问题,请参考以下文章