我有这个听众:
val listener = WindowInsetsControllerCompat.OnControllableInsetsChangedListener { controller: WindowInsetsControllerCompat, typeMask: Int ->
Log.i(FragmentVodPlayer.TAG, "onControllableInsetsChanged: changed")
if (typeMask and WindowInsetsCompat.Type.statusBars()
== WindowInsetsCompat.Type.statusBars()
|| typeMask and WindowInsetsCompat.Type.navigationBars()
== WindowInsetsCompat.Type.navigationBars()
) {
hideAfterAWhile.postDelayed({
controller.hide(
WindowInsetsCompat.Type.navigationBars()
or WindowInsetsCompat.Type.statusBars()
)
}, 3000)
}
}
我将它添加到instetsController
这样的:
insetsController.addOnControllableInsetsChangedListener(listener)
当我执行时它工作正常:
insetsController.hide(
WindowInsetsCompat.Type.statusBars()
or WindowInsetsCompat.Type.navigationBars()
)
但是当我点击我的屏幕并显示导航栏时,这个监听器永远不会触发,从我在文档中阅读的内容来看,它应该。
我知道这个监听器在我隐藏系统栏时起作用,因为我可以看到它将消息打印到我的 logcat 中。