3

我正在尝试创造一些我在任何地方都找不到的东西……至少是我想要的方式。

所以这是我想要实现的场景:

我正在使用带有 AppBarLayout (ABL) 和 NestedScrollView (NSV) 的典型 CoordinatorLayout,因此当我在 NSV/ABL 中滚动时,我会在 ABL 上看到一个很好的视差。

问题是 NSV 只占据屏幕底部的一小部分。如果我向上滚动它,它会从屏幕底部“分离”。此外,如果我将 ABL 拉得太低,它会保持太大。

我想要的是将 NSV 保持在原处,但允许过度滚动(修饰后恢复状态)。

另外,如何平滑滚动特定数量的 NSV?我尝试使用 behavior.onNestedFling 和 behavior.onNestedPreScroll 但第一个使用速度,而不是翻译,第二个没有动画。

有人可以指出我如何实现这一目标的正确方向吗?

在此先感谢,若昂

编辑:这里有一些澄清:http: //i.stack.imgur.com/oha7l.png

我有一个 CoordinatorLayout(红色方块)、一个 AppBarLayout,里面有一个 ImageView(绿色部分)和一个 NestedScrollView(白色部分)。

  • NestedScrollView 的内容高度很小(假设它内部有小视图)。

  • AppBarLayout 的大小固定为“300dp”。

情况:

  • 如果我向上滚动 appbarlayout 或 nestedscrollview,则nestedscrollview 的内容会向上滚动(从而折叠 appbarlayout。如果 nestedscrollview 中没有足够的内容,我不希望发生这种情况。但我确实希望它过度滚动并返回松开压力后回到原来的位置。

  • 如果我向下滚动,什么都不会发生(如果 appbarlayout 具有固定高度),我还希望它在释放按下后过度滚动并返回到原始位置。

加:

  • 当某些事件发生时,我想以编程方式平滑滚动 appbarlayout 向上或向下固定数量的“dp”。我尝试使用 behavior.onNestedFling 和 behavior.onNestedPreScroll 但这些方法要么不滚动固定量,要么不为滚动设置动画。
4

0 回答 0