1. 程式人生 > >Android--關於ListView和ViewPager滑動衝突的處理

Android--關於ListView和ViewPager滑動衝突的處理

在專案中我們經常會做在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); }