我正在尝试对(!)(嵌套)滚动视图中的滚动事件采取行动。
我在滚动视图中有一个项目,如果它最初在滚动视图/屏幕中不可见,我想“窥视”(转换为可见屏幕区域)几秒钟。但是一旦容器滚动,我想隐藏它(翻译回原点)。
因此,我尝试使用 CoordinatorLayout Behavior 来不将 scrollView 和我的(自定义)View 紧密耦合。
在文章之后,我尝试编写自定义行为,但发现我无法在我的视图上应用此行为,因为它不是 CoordinatorLayout 的子项。如果我必须将其设置在直系孩子身上,我该如何对曾孙采取行动?
这怎么可能实现?
布局看起来像这样:
<CoordinatorLayout>
<NestedScrollView>
<LinearLayout>
...
<MyView/>
<LinearLayout/>
</NestedScrollView>
</CoordinatorLayout>
行为非常简单:
公共类 MyBehaviour 扩展 CoordinatorLayout.Behavior{ ... @覆盖 public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int 嵌套滚动轴){ 返回真; } @覆盖 public void onNestedScroll(CoordinatorLayout coordinatorLayout,查看子项,查看目标,int dxConsumed,int dyConsumed,int dxUnconsumed, int dyUnconsumed) { super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); // 作用于 MyView } }