Android全屏粘性沉浸模式-如何更改导航栏背景或图标颜色?

Android全屏粘性沉浸模式-如何更改导航栏背景或图标颜色?,android,fullscreen,navigationbar,android-immersive,Android,Fullscreen,Navigationbar,Android Immersive,我遵循了这一点,并得到了全屏粘性沉浸模式的工作。这会使状态栏和导航栏隐藏,直到用户从底部向上或从顶部向下滑动,此时它们会出现,如果不使用,则会慢慢淡出 问题出在Android 10上(可能还有其他版本):屏幕底部的导航栏只是白色图标。没有透明的黑色背景。这使得使用轻量级UI很难看到 有没有办法更改导航栏的背景或图标颜色?特别是出现和消失的粘性沉浸式导航栏(因为它太轻,无法使用灯光UI)。 我尝试过以编程方式设置样式和颜色,但它们仅在非全屏模式下工作: <!-- does not work

我遵循了这一点,并得到了全屏粘性沉浸模式的工作。这会使状态栏和导航栏隐藏,直到用户从底部向上或从顶部向下滑动,此时它们会出现,如果不使用,则会慢慢淡出

问题出在Android 10上(可能还有其他版本):屏幕底部的导航栏只是白色图标。没有透明的黑色背景。这使得使用轻量级UI很难看到

有没有办法更改导航栏的背景或图标颜色?特别是出现和消失的粘性沉浸式导航栏(因为它太轻,无法使用灯光UI)。

我尝试过以编程方式设置样式和颜色,但它们仅在非全屏模式下工作:

<!-- does not work -->
<item name="android:navigationBarColor">@android:color/white</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLightNavigationBar">true</item>
protected fun isFullscreen() = defaultSharedPref.getBoolean(SharedPreferenceKey.IS_FULL_SCREEN, false)

private fun supportsFullscreenMode(): Boolean {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
}

override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)
    if (hasFocus && isFullscreen()) toggleFullScreenMode(true)
}

/**
 * "sticky immersive" full screen mode.
 * When user swipes from top/bottom edge, transparent status bar and navigation bar appear and slowly fade out if not used.
 * https://developer.android.com/training/system-ui/immersive
 */
protected fun toggleFullScreenMode(goFullScreen: Boolean) {
    when {
        !supportsFullscreenMode() -> {
            makeActivityToast("Your version of Android is too old to support this feature", Toast.LENGTH_LONG).show()
        }
        goFullScreen -> {
            hideSystemUI()
        }
        !goFullScreen -> {
            showSystemUI()
        }
    }
}

private fun showSystemUI() {
    window.decorView.systemUiVisibility = 0
}

private fun hideSystemUI() {
    window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        // Set the content to appear under the system bars so that the
        // content doesn't resize when the system bars hide and show.
        or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        // Hide the nav bar and status bar
        or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN)
}