在viewpager页面中使用mapview的手势问题

我的应用程序的主界面是一个viewpager,用户只是水平滑动页面到各个页面。 其中一个网页有谷歌地图查看(粘贴在下面)。 我的问题是,如果用户在地图页面上,并使用水平滑动手势,页面滑动到下一页,而不是地图侧面移动。 就好像viewpager正在获取地图前的手势。

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

有什么办法可以做到这一点?
谢谢,加里

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ContentPanel" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvMAP" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Map" style="@style/bigtype" /> <com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="mykeygoeshere" android:clickable="true" /> </LinearLayout> 

  • 显示空白列表项目的ListView中的ViewPagers
  • 将图标添加到SlidingTabLayout而不是文本
  • 查看寻呼机+ ImageView + Pinch缩放+旋转
  • 使用ViewPager +放大ImageViews的图像库
  • Eclipse不会将项目识别为库(ActionBarSherlock / ViewPagerIndicator)
  • Android:ViewPager卡在视图之间
  • ViewPager和FragmentPagerAdapter中的片段的Android生命周期管理
  • 无法强制转换为自定义ViewPager类
  • 当然有:

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

    这将使地图忽略地图内的所有幻灯片,只关心地图外的幻灯片/拖动。 希望能帮助到你。 (我现在这样做的横向滚动的web视图)

    编辑:忘了提及,而不是ViewPager你需要在你的布局中使用CustomViewPager。

     <com.yourpackage.CustomViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 

    如果使用Google地图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时,使得滚动查看是maps.jb。

    同样在我的代码中,使用了这些类:

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