我能够在我的应用程序中设置沉浸式模式navigation,status bars在几乎所有情况下都可以正确隐藏。我迄今发现的唯一的排斥是,当我点击一个Spinner有分量
android:spinnerMode="dropdown"的navigation bar还是来了。从下拉列表中选择一个项目后它就会消失,但我希望它根本不显示。有没有办法做到这一点?
我能够解决这个问题,尽管这并不能很好地满足我的需求,但它仍然可以防止窗口焦点更改,这就是导致系统 UI 显示的原因。抱歉,这是 Kotlin 语言
onCreate()try {
val popup = Spinner::class.java.getDeclaredField("mPopup")
popup.isAccessible = true
// Get private mPopup member variable and try cast to ListPopupWindow
val popupWindow = popup.get(yourSpinnerView) as android.widget.ListPopupWindow
popupWindow.isModal = false
} catch (e: Throwable) {
// silently fail...
}
Run Code Online (Sandbox Code Playgroud)
重要的部分是这一行:
popupWindow.isModal = false
Run Code Online (Sandbox Code Playgroud)
这不会影响微调器交互,至少对我来说,它仍然可以正确注册点击,并在弹出窗口外部发生点击时隐藏。但是,它不会捕获所有点击,因此触摸其他屏幕元素将触发它们onClickListener并隐藏微调器。因此,我决定不使用此方法,而只处理出现的导航栏,因为我无法通过使用此方法获得我想要的东西。
希望这对其他人有帮助,因为我花了一周的大部分时间才弄清楚这一点。我希望 Android 不会考虑打开旋转器来改变窗口可见性,删除所有窗口标志并终止沉浸式模式。
编辑:删除了自定义类,选择最简单的解决方案,非常容易实现。
| 归档时间: |
|
| 查看次数: |
2443 次 |
| 最近记录: |