禁用其中一个ViewPager选项卡中的滑动

时间:2012-11-06 10:02:06

标签: android android-mapview android-viewpager

  

可能重复:
  gesture issue with mapview in viewpager page

我使用的模板允许我们在标签之间水平滑动

但我的一个标签是 MapView ,所以当我在MapView中向左/向右滑动时,它会切换标签而不是移动地图。

有没有办法只在MapView标签中禁用手势?

由于

1 个答案:

答案 0 :(得分:17)

我从this question

找到答案

如果链接已死,我在这里复制了代码:

使用这个确切的代码创建一个新类,它将阻止MapView接收除地图相关手势之外的任何其他手势。不要忘记在这些代码上方添加packageimport(CTRL + SHIFT + O)

public class CustomViewPager extends ViewPager {

    public CustomViewPager(Context context) {
        super(context);
    }

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
        if (v instanceof MapView) {
            return true;
        }
        return super.canScroll(v, checkV, dx, x, y);
    }
}

然后在main.xml中将<android.support.v4.view.ViewPager ... />更改为:

<com.yourPackage.CustomViewPager
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main" />

感谢Jorge Aguilar对这个问题的回答!