Android--關於ListView和ViewPager滑動衝突的處理
阿新 • • 發佈:2019-02-11
在專案中我們經常會做在listview的header新增viewpager來滾動播放(廣告或者新聞等焦點圖)的需求,由於viewpager的橫向滑動和listview的縱向滑動會導致衝突
解決辦法如下:
1,繼承viewpager並且重寫dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent這三個方法
2,通過set方法傳入ViewPager 的parent(ViewGroup)
然後在返回super方法的之前加入如下程式碼:
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
return super.onInterceptTouchEvent(arg0);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true );
}
return super.onTouchEvent(arg0);
}