ViewPager中的Fragment包含地图时,滑动事件冲突问题

0.225字数 159阅读 484

有这样一个需求场景,要用地图,且要放在Fragment中,地图左右拖动就会和ViewPager的滑动事件冲突,这类似两个可拖动控件的冲突,网上有不少解决方案,但是大部分不适用,这里我写一个我实测可行的解决方法。

  1. 自定义一个viewPager
public class ViewPagerCompat extends ViewPager {
    public ViewPagerCompat(Context context) {
        super(context);
    }
    public ViewPagerCompat(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    @Override
    protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
        if(v.getClass().getName().equals("com.esri.android.map.MapView")) {
            return true;
        }
        return super.canScroll(v, checkV, dx, x, y);
    }
}
  1. 然后用这个ViewPagerCompat代替原来的ViewPager使用即可。

从之衍生,其它类似组件冲突应该也可这样处理,只要将

v.getClass().getName().equals("com.esri.android.map.MapView")

中的“com.esri.android.map.MapView”替换为产生冲突的控件即可。

推荐阅读更多精彩内容