CoordinatorLayout 仅在特定片段中滚动时隐藏工具栏

CoordinatorLayout hide toolbar when scrolling only in specific fragment

我对多个片段使用单一 Activity 方法,在主屏幕中我有 RecycleView 并且我想在仅在主屏幕中滚动时隐藏工具栏,因为它是单一的 activity 和一个顶层 CoordinatorLayout Toolbar 在所有屏幕中滚动时隐藏。

如何在某些屏幕上启用“在滚动时隐藏工具栏”并在单个屏幕上禁用其他屏幕activity?

您必须跟踪哪个片段(屏幕)在您的 activity 中处于活动状态,并使用这些功能来隐藏或显示。

fun enableLayoutBehaviour() {
    val layoutParams: CoordinatorLayout.LayoutParams = coordinatorLayout.layoutParams 
    layoutParams.behavior = AppBarLayout.ScrollingViewBehavior()
}

fun disableLayoutBehaviour() {
    val layoutParams: CoordinatorLayout.LayoutParams = coordinatorLayout.layoutParams
    layoutParams.behavior = null
}

@Yonatan 在我的案例中的回答还不够,当在片段之间导航时,一些视图在底部不可见,可能是一些高度配置错误。

Toolbar 启用和禁用滚动标志效果很好。

public void disableToolbarScrollBehavior() {
        final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
        params.setScrollFlags(0);
    }

    public void enableToolbarScrollBehavior() {    
        final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
        params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
    }