android兩個ListView同步滾動
阿新 • • 發佈:2019-01-10
我在網上看到大多數專家講解的都是設定setOnScrollListener滑動監聽,但是個人感覺設定滑動監聽比較麻煩,感覺使用事件分發來做比較簡單;
實現思路:首先來線下整體佈局,是使用一個橫向的線性佈局裡面放了兩個ListView,使用權重讓兩個ListView平分螢幕的寬。
如果想使用View的事件分發,必須自定義這個View,這裡面實現起來也非常簡單,只是自定義一個線性佈局繼承系統的線性佈局;
我這裡面使用的是線性佈局,實際專案中使用什麼佈局都可以,這裡面只是方便兩個ListView設定權重;
實現自定義佈局在這個類中重寫onInterceptTouchEvent();作用就是把事件中斷掉,不讓ListView得到事件;
/**
* 判斷是否需要中斷事件的傳遞
* 預設返回false 意思是,不中斷
* 返回true 意思是,中斷
*/
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true;
}
如果只寫這個方法執行結果是兩個ListView跟進沒辦法滑動,下面還需要重寫onTouchEvent()方法,在這個方法中把事件同時交給兩個ListView,作用就是當你滑動的時候兩個ListView都能收到滑動事件;
public boolean onTouchEvent(MotionEvent event) { //獲得listview的個數 int count=getChildCount(); for (int i = 0; i < count; i++) { View child = getChildAt(i); try { child.dispatchTouchEvent(event); } catch (Exception e) { e.printStackTrace(); } } return true; }
好了,只需要兩個方法,十行程式碼搞定,所以感覺比設定滑動監聽要簡單;