gpt4 book ai didi

android - 如何将滚动事件从我的 View 传递到 CoordinatorLayout?

转载 作者:可可西里 更新时间:2023-11-01 11:42:29 25 4
gpt4 key购买 nike

Material Design 有这种奇特的模式,当滚动下面的某些 View 时,会滚动/隐藏/固定 ToolBar/ActionBar 的部分。我有自己的非常专业的 View ,它不是 RecyclerView 的后代(默认情况下可能会处理此问题),因此它不适用于滚动行为。我怀疑我需要将一些滚动信息传递给 Coordinator-layout 来处理滚动上的隐藏。但是我该怎么做呢?

最佳答案

您需要查看名为 NestedScrollingChildHelper ( docs ) 的支持类。

您可以轻松地将这个助手类移植到您的 ScrollView 中。让您的类实现 NestedScrollingChild,实例化一个委托(delegate)实例,然后将所有接口(interface)方法委托(delegate)给该实例。

最后,无论何时处理滚动或滑动,都可以调用这些方法来查看 CoordinatorLayout 是否会在 ScrollView 之前消耗运动事件。

下面是 NestedScrollingChild.onTouchEvent() 中的一段代码,向您展示了嵌套滚动的实际效果:

            final int y = (int) MotionEventCompat.getY(ev, activePointerIndex);
int deltaY = mLastMotionY - y;
if (dispatchNestedPreScroll(0, deltaY, mScrollConsumed, mScrollOffset)) {
deltaY -= mScrollConsumed[1];
vtev.offsetLocation(0, mScrollOffset[1]);
mNestedYOffset += mScrollOffset[1];
}

请参阅此文件的第 766 行:NestedScrollView.java .顺便说一句,这个类使用 NestedScrollingChildHelper 委托(delegate),所以您可以确切地看到它是如何工作的。

不要忘记使用 ViewCompat 代替 View,使用 ViewGroupCompat 代替 ViewGroup,等等。

关于android - 如何将滚动事件从我的 View 传递到 CoordinatorLayout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35703802/

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