【发布时间】:2018-03-12 15:24:04
【问题描述】:
我有一个VerticalViewPager,其中每个子片段都包含类似
<MyScrollView>
<LinearLayout orientation=vertical>
...
...
</LinearLayout>
</MyScrollView>
当MyScrollView 滚动到底部时,我希望VerticalViewPager 启动并发挥其魔力。同样,如果我将MyScrollView 滚动到最顶部。
我已经尝试了一堆拦截ScrollView 中的触摸事件,以某种方式将MotionEvent 发送到VerticalViewPager,但没有任何运气。
这显然行不通,但为了让对话继续进行,我目前在MyScrollView 中执行以下操作
override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
return super.onInterceptTouchEvent(ev) && atBottom
}
override fun onScrollChanged(l: Int, t: Int, oldl: Int, oldt: Int) {
atBottom = getChildAt(0).bottom <= (height + scrollY)
super.onScrollChanged(l, t, oldl, oldt)
}
这工作不稳定且不值得信赖,而且根本不是。非常感谢任何输入!
【问题讨论】:
-
根据您的逻辑,您是否尝试过在 ScrollView 中从
onTouch侦听器返回false?我认为返回 false 将向 SDK 发出您不希望滚动视图处理触摸事件的信号,并且它可能会被进一步传播。 -
您在
ScrollView内有一个ScrollView(MyScrollView在VerticalScrollView内)。确保MyScrollView是NestedScrollView的一个实例。 -
@azizbekian 谢谢,但我也试过了。不会改变任何东西。
-
VerticalScrollView是自己写的,还是库?如果您使用的是库,能否添加指向它的链接,或者告诉我们它的名称? -
@cjurjiu 感谢您的评论。但是不,没有图书馆。并且要明确一点——
MyScrollView只是一个自定义的NestedScrollView,让我更容易编写触摸拦截代码。但也许你想问一下VerticalViewPager?这就像任何谷歌点击会告诉你做的一样。例如。 android.googlesource.com/platform/packages/apps/DeskClock/+/…
标签: android android-viewpager kotlin android-scrollview