ListView 與 它里面的Item 點擊滑動沖突


轉自 http://blog.csdn.net/fzh0803/article/details/9474359

listview的父親要求滑動,在點擊listview區域時要求在滑動的只是只滑動listview,但一般做法無法滿足要求,listview無法兼顧點擊事件與滑動。

解決的辦法是,給item設置一個rootview,重寫rootview的onTouchEvent

@Override
public boolean onTouchEvent(MotionEvent event) {
final int action = event.getAction();
if(action ==  MotionEvent.ACTION_MOVE) {
if(null != scrollView) {
customListView.setEventFlag(true);
return false;
}
}
return super.onTouchEvent(event);

}

再實現一個定制的listview,重寫onIntercepotTouchEvent方法:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev){
if(MotionEvent.ACTION_UP == ev.getAction()) {
//父view允許滑動
}else { 
//禁止父view滑動
}
if(eventFlag) {
eventFlag =  !eventFlag;
return true;
}
return super.onInterceptTouchEvent(ev);
}

 

這樣既可實現item的點擊與滑動共存。原理是onTouchEvent事件是向上傳遞的,在view處理完事件后,截取move,做截取標志,listview截取所有的事件,然后自己做處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM