Android viewpager页面中mapview的手势问题
我的应用程序的主界面是一个viewpager,用户只需水平滑动页面即可进入各个页面。其中一个页面有一个谷歌地图视图(粘贴在下面)。我的问题是,如果用户在地图页面上并使用水平滑动手势,则页面将滑动到下一页,而不是地图侧向移动。这就好像viewpager在地图前得到了手势一样 如果用户很聪明,开始沿对角线或垂直方向滑动地图,地图开始移动,然后手势可以水平继续。但我更喜欢地图移动,而不是简单的水平滑动手势页面。始终可以使用textview滑动页面 我有什么办法可以做到这一点吗?Android viewpager页面中mapview的手势问题,android,google-maps,android-viewpager,Android,Google Maps,Android Viewpager,我的应用程序的主界面是一个viewpager,用户只需水平滑动页面即可进入各个页面。其中一个页面有一个谷歌地图视图(粘贴在下面)。我的问题是,如果用户在地图页面上并使用水平滑动手势,则页面将滑动到下一页,而不是地图侧向移动。这就好像viewpager在地图前得到了手势一样 如果用户很聪明,开始沿对角线或垂直方向滑动地图,地图开始移动,然后手势可以水平继续。但我更喜欢地图移动,而不是简单的水平滑动手势页面。始终可以使用textview滑动页面 我有什么办法可以做到这一点吗? 谢谢 加里 当然有:
谢谢 加里
当然有:
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执行此操作)
编辑:忘了提及在您的布局中需要使用CustomViewPager而不是ViewPager
<com.yourpackage.CustomViewPager
android:id="@+id/viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
如果使用谷歌地图V2,请使用 scrollingView.getClass().getPackage().getName().StartWith(“地图”) 在中可以滚动方法:
@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);
}
因为使用maps v2时,scrollingView是maps.j.b
在我的代码中,还使用了以下类:
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
我将您的类放入我的主activity.java文件中。我将xml更改为调用com.deanblakly.CustomViewPager。已获取运行时类NotFoundException com.deanblakly.CustomeviewPage。有什么事我忘了做吗?(android和java都是新的)。这应该是在一个单独的类中。您需要创建一个新文件并放入此代码。在这种情况下,如果要放置“com.deanblakly.CustomViewPager”,则在“com”folder.Jorge内的文件夹“deanblakly”中创建文件“CustomViewPager”。是的,一旦我把这个类放到一个单独的文件中,它就起作用了。谢谢。我这样做了,返回的视图可以滚动它是一个CustomViewPager而不是MapView我正在触摸地图(我使用SupportMapFragment)因为这种方法用于Viewpager,就像你在扩展后看到的那样,我不知道它是否适用于MapView,但你可以尝试在那里进行更改。scrollingView.getClass()每次对我来说都是空的,所以这是错误的。可能
scrollingView
是null
或者您使用匿名scrollingView
class?有关Object.getClass()的文档没有说明getClass
返回null
的情况。
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;