gpt4 book ai didi

android - 在 CollapsingToolbarLayout/AppBarLayout 中禁用垂直滚动

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:53:52 26 4
gpt4 key购买 nike

我只希望在嵌套 ScrollView 中发生滚动/触摸事件时在 CollapsingToolbarLayout/AppBarLayout 上垂直滚动(这是有效的),但是如果用户尝试直接滚动 CollapsingToolbarLayout/AppBarLayout 它应该不起作用。我需要这个,因为那里的滚动/触摸事件会干扰我的 recyclerview 滚动事件。

我有这样的结构:

CoordinatorLayout

-- AppBarLayout

---- CollapsingToolbarLayout (scrollflags: scroll, exitUntilCollapsed, snap)

------ Toolbar (CollapseMode: pin)

------ RecyclerView (Horizontal, CollapseMode: pin)

----- /CollapsingToolbarLayout

-- /AppBarLayout

-- NestedScrollView (Behaviour: appbar_scrolling_view_behavior)

-- /NestedScrollView

/ CoordinatorLayout

我尝试为 CollapsingToolbarLayout/AppBarLayout 覆盖 onTouch() 和 onInterceptTouchEvent() 但它一直拦截触摸事件/滚动。

最佳答案

好的,我找到了解决方案。

您只需重写 AppBarLayout 行为中的 onDrag() 方法,如果触摸发生在 AppBarLayout View 顶部,则不会触发滚动。

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
@Override
public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
return false;
}
});

解决方法: How to disable scrolling of AppBarLayout in CoordinatorLayout?

如果你因为空行为而遇到 NullPointerException,你应该先分配一个:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mAppbar.getLayoutParams();
params.setBehavior(new AppBarLayout.Behavior());

关于android - 在 CollapsingToolbarLayout/AppBarLayout 中禁用垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40750005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com