我有一個使用自定義適配器的列表視圖。每行都有一些文本和一個可點擊的FrameLayout,其上設置了onClickListener。行可以通過刷卡刪除(如Gmail或環聊)。我正在使用Roman Nurik的SwipeToDismiss庫。問題是可點擊的FrameLayout佔用一半的行空間,所以很難將該行劃掉,因爲它消耗了MOVE事件。將觸摸事件(移動/滑動)傳遞給父級,但在當前視圖上保留單擊事件
我讀過,我可以通過擴展FrameLayout和重寫dispatchTouchEvent方法將事件傳遞給父視圖。我已經嘗試過,但所有事件都通過了,因此FrameLayout不再是可點擊的。
我也試過這樣:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_MOVE) {
return false;
}
return super.dispatchTouchEvent(ev);
}
,但它看起來像曾經認爲「得到」的DOWN事件,它不會將它傳遞給父母了。
我的問題: 我應該怎麼做,在當前視圖上保持onClick事件,但將MOVE事件傳遞給父視圖?
我應該取消運動事件,並在發生ACTION_MOVE時將其傳遞給父項。我怎麼做? – tomziwar