有这样一个需求场景,要用地图,且要放在Fragment中,地图左右拖动就会和ViewPager的滑动事件冲突,这类似两个可拖动控件的冲突,网上有不少解决方案,但是大部分不适用,这里我写一个我实测可行的解决方法。
- 自定义一个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);
}
}
- 然后用这个ViewPagerCompat代替原来的ViewPager使用即可。
从之衍生,其它类似组件冲突应该也可这样处理,只要将
v.getClass().getName().equals("com.esri.android.map.MapView")
中的“com.esri.android.map.MapView”替换为产生冲突的控件即可。