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);
}
我对多个片段使用单一 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);
}