在使用windowinsets之前拦截抽屉布局

时间:2019-07-18 07:42:07

标签: android android-layout

我知道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
        }

1 个答案:

答案 0 :(得分:0)

哦。

我发现DrawerLayout不需要设置fitsSystemWindows = true,

它仍然可以工作。

当我删除fitsSystemWindows属性和windowInsets侦听器时。