在viewpager页面中mapview的手势问题

我的应用程序的主界面是一个viewpager,用户只需水平滑动页面即可访问各个页面。 其中一个页面有一个谷歌mapview(粘贴在下面)。 我的问题是,如果用户在地图页面上并使用水平滑动手势,页面将滑动到下一页而不是横向移动的地图。 就好像viewpager在地图之前获取手势一样。

如果用户很聪明并开始沿对角线或垂直方向滑动地图,则地图开始移动,然后手势可以水平继续。 但我更喜欢在简单的水平滑动手势上移动地图而不是页面。 可以使用textview始终滑动页面。

有什么方法可以让这件事发生吗?
谢谢,加里

     

  • Google Maps CameraUpdateFactory未初始化
  • Android Studio错误:无法解析符号'查看'
  • 从坐标获取国家?
  • 使用Kotlin在Android上的UI组件上声明的最佳方法是什么?
  • 将-P参数从android studio传递给gradle
  • Manifest.xml设置中的RegisterBroadcastReceiver或实现源代码
  • 隐藏库类 - Android
  • 如何在Android或Java中呈现HTML代码时应用字体大小
  • 当然有:

     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); } } 

    这将使地图忽略地图内的所有幻灯片,只关心地图外的幻灯片/拖动。 希望能帮助到你。 (我现在正在使用水平滚动的webview)

    编辑:忘记提及您需要在yout布局中使用CustomViewPager而不是ViewPager。

      

    如果使用Google Maps V2,请使用

    canScroll方法中的scrollingView.getClass()。getPackage()。getName()。startsWith(“maps。”)

     @Override protected boolean canScroll(View scrollingView, boolean checkV, int dx, int x, int y) { if (scrollingView.getClass().getPackage().getName().startsWith("maps.")) { return true; } return super.canScroll(scrollingView, checkV, dx, x, y); } 

    当使用地图v2时,使用scrollingViewmaps.jb。

    同样在我的代码中,使用了以下类:

     import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment;