相关疑难解决方法(0)

使用"沉浸式模式"检测系统按钮何时可见

我目前正在为我的一个活动使用沉浸式模式(API 19),如下所示:

getWindow().getDecorView()
            .setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                            | View.INVISIBLE);
Run Code Online (Sandbox Code Playgroud)

这会隐藏系统按钮和通知栏,直到用户向后滑动它们.这工作正常,但是我想检测用户何时再次显示按钮.我已经尝试了OnSystemUiVisibilityChangeListener但是它不会触发这个特定的事件.

有任何想法吗?

android android-4.4-kitkat

15
推荐指数
2
解决办法
1万
查看次数

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

我按照Android 开发教程操作并获得了全屏粘性沉浸模式。这使得状态栏和导航栏隐藏,直到用户从底部向上或从顶部向下滑动,此时它们会出现并在不使用时慢慢淡出。

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

有没有办法改变导航栏的背景或图标颜色?特别是粘性的沉浸式导航栏,它会出现并消失(因为它太轻,无法与浅色 UI 一起使用)。

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

<!-- does not work -->
<item name="android:navigationBarColor">@android:color/white</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowLightNavigationBar">true</item>
Run Code Online (Sandbox Code Playgroud)

我也尝试过聆听,OnSystemUiVisibilityChangeListener这样我就可以在导航栏后面显示我自己的透明栏,但它不会触发粘性沉浸模式(如本 SO 帖子和视频中所述):

使用粘性沉浸模式检测系统用户界面何时可见

https://www.youtube.com/watch?v=cBi8fjv90E4&feature=youtu.be&t=6m56s

设置全屏的活动代码(kotlin):

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 …
Run Code Online (Sandbox Code Playgroud)

android fullscreen navigationbar android-immersive

6
推荐指数
0
解决办法
2384
查看次数