Android 如何在使用设计支持库时以编程方式启用/禁用工具栏滚动

Android 如何在使用设计支持库时以编程方式启用/禁用工具栏滚动,android,toolbar,android-support-design,Android,Toolbar,Android Support Design,我使用support design library在片段内滚动recyclerView时显示/隐藏工具栏,如下所述 它工作正常,现在我想以编程方式启用/禁用工具栏滚动,因为我使用了片段,我需要为某些片段停止此功能。删除app:layout\u scroll flags=“scroll | enterally”无论您想在哪里禁用任务栏滚动。,作为AppBarLayout的子级,从AppBarLayout获取其LayoutParams。这些布局参数具有在XML中设置的滚动标志 因此,您可以从工具

我使用support design library在片段内滚动recyclerView时显示/隐藏工具栏,如下所述



它工作正常,现在我想以编程方式启用/禁用工具栏滚动,因为我使用了片段,我需要为某些片段停止此功能。

删除
app:layout\u scroll flags=“scroll | enterally”
无论您想在哪里禁用任务栏滚动。

,作为
AppBarLayout
的子级,从
AppBarLayout
获取其
LayoutParams
。这些布局参数具有在XML中设置的滚动标志

因此,您可以从
工具栏
获取
AppBarLayout.LayoutParams
,并调用
setScrollFlags()
将标志更改为所需的值

    Toolbar toolbar = findViewById(R.id.toolbar);  // or however you need to do it for your code
    AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
    params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);  // clear all scroll flags

如果希望在xml:app:layout\u scrollFlags=“enterAlwaysCollapsed”中禁用它,并且要在运行时添加回滚,请对常量使用相同的方法,我希望使用相同的行为。它起作用了,但我遇到的问题是,当我将标志设置为0时,nestedScrollView的高度会降低,并且会在内容底部创建一个巨大的空白。如果有人知道,请提供帮助。@Vinetashtekar您可以尝试同时将appbar\u scrolling\u view\u行为从
NestedScrollView
中移除。由于工具栏无法再滚动,因此没有理由将
NestedScrollView
设置为可以滚动。我不知道如何通过编程实现这一点;我正在调查。@krislarson谢谢,我会调查的。在支持25.3.1之后,它需要调用
appBarLayout.requestLayout()
才能生效。
    Toolbar toolbar = findViewById(R.id.toolbar);  // or however you need to do it for your code
    AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
    params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);  // clear all scroll flags