我有一个活动,其布局由一个 ScrollView 组成,该 ScrollView 包含页面的主布局(我们称之为“主视图”)。我使用 ScrollView 的原因是在一些较小的屏幕上,内容可能比屏幕本身占用更多的垂直空间。我想在 ScrollView 或上方添加一个视图,该视图将从屏幕上绘制出来(我们将其称为“隐藏视图”),并且仅在用户已经在顶部时拉下时才会显示滚动视图。以下是我所描述的示例:
另外,为了使它更复杂,如果 ScrollView 被滚动到顶部,我希望它在“隐藏视图”出现之前停止。我只希望在 ScrollView 已经滚动到顶部后用户下拉时显示“隐藏视图”(类似于 pulltorefresh)。
我还希望用户能够向上滚动以“重新隐藏”隐藏的视图。
我不确定实现这一点的最佳方法。我玩过 pulltorefresh 库,但对于我想要完成的事情来说,它似乎太强大了。另外,这并不是我想要的效果。例如,我可以在下拉后显示“正在加载...”屏幕,但在那之后,我希望我的“隐藏视图”保留在屏幕上,直到用户将其推回。如果我可以使用 pulltorefresh 完成此操作,那就太好了,但是我在尝试遵循库的代码时迷失了方向。
我还考虑过简单地将隐藏视图添加到 ScrollView,并使用scrollView.fullScroll(ScrollView.FOCUS_DOWN)
强制 ScrollView 滚动到底部。这样做的问题是,如果设备的屏幕不是很小,有足够的空间让“主视图”和“隐藏视图”同时显示,不需要滚动。此外,在“隐藏视图”出现在屏幕上之前,我不会得到 ScrollView 停止的效果。
我考虑过的另一个选项是执行我上面描述的操作,然后在将 ScrollView 强制到底部之前调整“主视图”的大小以匹配设备的屏幕大小。但同样,我会失去 ScrollView 停止的效果。
我觉得必须有一种更简单或更优雅的方式来做到这一点,而我却错过了。谢谢!