1. 程式人生 > 其它 >【Android】解決長按事件和短按事件同時響應的問題

【Android】解決長按事件和短按事件同時響應的問題

技術標籤:Androidandroid

這個需要從事件分發機制說起,在按鈕響應事件的時候,如果同時綁定了長按和點選事件,長按事件觸發時預設不做處理的話會優先響應長按事件,如果在長按事件裡面你沒有消費掉該事件,根據安卓的事件分發機制,該事件會繼續向下傳遞,直到有控制元件把它消費掉為止。明白了這個道理,長按事件和短按事件同時響應的問題就不難解決了,在同時繫結兩個事件的情況下,如果先點選的是短按事件沒問題,自然觸發不到長按事件,但是如果先觸發的是長按事件如果當前return false的話代表當前事件需要繼續向下傳遞所以短按事件就被響應了,這種情況在onLongClick中返回true即可,代表當前有能力消費掉該事件,阻止事件向下傳遞,短按事件就不會被觸發了。

//longClick事件
myViewHolder.textView.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        onItemClickListener.onItemLongClick(myViewHolder.textView,position);
        return true;   //return true即可解決長按事件跟點選事件同時響應的問題
    }
});

總結一句話就是在長按事件中的return false 改為return true就可以解決這個問題