有這樣一個(gè)需求場(chǎng)景,要用地圖,且要放在Fragment中,地圖左右拖動(dòng)就會(huì)和ViewPager的滑動(dòng)事件沖突,這類似兩個(gè)可拖動(dòng)控件的沖突,網(wǎng)上有不少解決方案,但是大部分不適用,這里我寫一個(gè)我實(shí)測(cè)可行的解決方法。
- 自定義一個(gè)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);
}
}
- 然后用這個(gè)ViewPagerCompat代替原來(lái)的ViewPager使用即可。
從之衍生,其它類似組件沖突應(yīng)該也可這樣處理,只要將
v.getClass().getName().equals("com.esri.android.map.MapView")
中的“com.esri.android.map.MapView”替換為產(chǎn)生沖突的控件即可。