淺談Android onClick與onLongClick事件觸發的問題


      之前做按鈕的點擊事件一直沒有注意一些細節,今天做了一個按鈕需要有點擊和長點擊觸發不同效果,直接讓Activity implements OnClickListener, OnLongClickListener然后添加了相應的處理函數。

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public boolean onLongClick(View v) {
        // TODO Auto-generated method stub
        return false;
    }

沒多做考慮,直接在函數內添加了我想要的實現。在一次不經意的測試中發現,在我的按鈕點擊時間中有一個臨界值,當我單下按鈕的時間等於這個臨界值的時候,點擊事件和長點擊事件會同時觸發。點擊事件自然是沒什么問題,導致這個問題一定是長點擊事件出了問題,回過頭仔細看長點擊事件的方法,發現它和點擊事件基本沒有區別,唯一的區別就是多了一個返回值。那么這個返回值究竟有什么用呢,查了一下開發文檔,對這個方法描述如下:

Public Methods

public abstract boolean onLongClick (View v)

Added in   API level 1

Called when a view has been clicked and held.

Parameters
v The view that was clicked and held.
Returns
  • true if the callback consumed the long click, false otherwise.

 說明了如果返回值為true的話這個點擊事件會被長點擊獨占,否則相反。

 這下就可以理解了為什么之前的點擊會同時觸發兩個點擊事件。

將onLongClick的返回值設置為true,即可避免這個問題的發生。


免責聲明!

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



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