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状态栏操作的各种方式的主要内容,如果未能解决你的问题,请参考以下文章

Android开发 状态栏开发

Android开发 状态栏开发

android中状态栏下的nativescript操作栏

Android 隐藏状态栏、标题栏、透明状态栏的几种方式

Android标题栏状态栏图标文字颜色及背景动态变化

安卓 /android 手机 隐藏 状态栏 怎么操作啊