我知道DrawerLayout通过自己的行为自动消耗windowInsets。 这是否意味着如果根目录布局为抽屉布局,那么我将永远无法接收windowInsets?
如果“ rootView”为ConstraintLayout并且一切正常, 但是,当我将“ rootView”更改为DrawerLayout且constraintLayout成为其子视图时,windowInsets侦听器将永远无法工作。
rootView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
ViewCompat.setOnApplyWindowInsetsListener(toolbar_main) { _, inset ->
// This callback never triggers.
LogUtil.d(TAG, "inset top : ${inset.systemWindowInsetTop}")
toolbar_main.updateLayoutParams<ViewGroup.MarginLayoutParams> {
topMargin = inset.systemWindowInsetTop
}
currentY = (toolbarHeight + inset.systemWindowInsetTop).toFloat()
recyclerView_music.updatePadding(top = toolbarHeight + inset.systemWindowInsetTop)
inset
}
ViewCompat.setOnApplyWindowInsetsListener(recyclerView_music) { _, inset ->
recyclerView_music.updatePadding(bottom = inset.systemWindowInsetBottom)
inset
}
答案 0 :(得分:0)
哦。
我发现DrawerLayout不需要设置fitsSystemWindows = true,
它仍然可以工作。
当我删除fitsSystemWindows属性和windowInsets侦听器时。