how to disable viewpager adapter on touching specific views?(如何在触摸特定视图时禁用 viewpager 适配器?)
问题描述
我有一个 viewpager,它在向左/向右滑动时在选项卡之间切换.在我的第二个选项卡中,我有一些自定义视图,它们具有用于捏合和拖动的侦听器,但是当我尝试捏合或拖动时,viewpager 开始滑动页面.
I have a viewpager which switches between tabs when swiping left/right.In my second tab, i have some custom views which have listeners for pinching and dragging but when i try to pinch or drag, the viewpager starts to swipe the page.
我想到的一个解决方案是在触摸这些特定视图时禁用滑动,仅在触摸这些视图之外时才滑动.这可能吗?
A solution comes to my mind is to disable swiping when touching those specific views and only swipe when touching outside those views.Is this possible?
更新:@Asok 好心地提供了解决方案.但后来更新了在我的情况下不起作用的代码,所以我发布了上一段对我有用的代码:
Updated: @Asok kindly provided the solution. But then updated the code which wouldnt work in my case so i post the previous piece of code which worked for me:
假设我有一个可拖动的视图,我需要在拖动开始时禁用滑动,并在拖动完成时重新启用,所以在我所谓的视图的 TouchEvent 中:
Lets suppose i have a draggable view and i need to disable swipping when dragging start and re enable when dragging finished so in TouchEvent of my so called view:
推荐答案
我首先想到的是有一个自定义的 ViewPager
,当你的触摸监听器收到通知时特定事件,您可以将 ViewPager
中的 swipeable
boolean
设置为 false,然后以最适合您的应用程序的方式将其设置回 true.
This first thing that comes to mind for me is to have a custom ViewPager
in which, when your touch listeners get notified of a specific event you could set the swipeable
boolean
in ViewPager
to false and set it back to true whichever way best fits your application.
<小时>
确保更改布局文件以显示:
Make sure to change your layout file to show:
代替:
<小时>
编辑 2
这是我的设置(使用上面的 CustomViewPager
):
Here is my setup (Working with the above CustomViewPager
):
上面显示的 onCreate
在我的 MainActivity
类中,它扩展了 FragmentActivity
并实现了 ActionBar.TabListener
The above shown onCreate
is in my MainActivity
class which extends FragmentActivity
and implements ActionBar.TabListener
这篇关于如何在触摸特定视图时禁用 viewpager 适配器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!