当特定 child 具有焦点时禁用 ViewPager 滚动
Disable ViewPager scrolling when specific child has focus
我知道有几个答案描述了如何锁定 ViewPager
。
但我希望我的 ViewPager
仅在触摸未发生在特定 child 上时才能够滚动。
那么我如何"filter" 找出哪些 child 视图被触及了?
我想如何锁定 ViewPager
:
的示例代码
for (Integer resource:mResources) {
if(resource.intValue()==view.getId()){
touchTriggeredOnView(view.getId());
}
}
我想这样做的原因是,我有一个自定义视图需要检测滑动手势。
此自定义视图是 Fragment
的 child,Fragment
是 ViewPager
.
的 child
所以:ViewPager
->Fragment
->CustomView
.
我能够检测到 DOWN
但不能检测到 CustomView
中的 FLING
事件。
我认为 ViewPager
捕获了 FLING
事件 --> 不好。
希望我的问题够清楚了。
Android 中的 onTouch and gesture listeners 具有布尔值 return,指示事件(触摸、猛击、点击)是否被消耗。
ViewPager 可能会消耗 "Fling" 事件,但是您可以覆盖 onTouch、ViewPager 中的手势侦听器和 return false - 因此不会消耗触摸事件并将其传递给您的自定义视图。
我知道有几个答案描述了如何锁定 ViewPager
。
但我希望我的 ViewPager
仅在触摸未发生在特定 child 上时才能够滚动。
那么我如何"filter" 找出哪些 child 视图被触及了?
我想如何锁定 ViewPager
:
for (Integer resource:mResources) {
if(resource.intValue()==view.getId()){
touchTriggeredOnView(view.getId());
}
}
我想这样做的原因是,我有一个自定义视图需要检测滑动手势。
此自定义视图是 Fragment
的 child,Fragment
是 ViewPager
.
所以:ViewPager
->Fragment
->CustomView
.
我能够检测到 DOWN
但不能检测到 CustomView
中的 FLING
事件。
我认为 ViewPager
捕获了 FLING
事件 --> 不好。
希望我的问题够清楚了。
onTouch and gesture listeners 具有布尔值 return,指示事件(触摸、猛击、点击)是否被消耗。
ViewPager 可能会消耗 "Fling" 事件,但是您可以覆盖 onTouch、ViewPager 中的手势侦听器和 return false - 因此不会消耗触摸事件并将其传递给您的自定义视图。