2010-12-09 64 views
42

我想使用相同的按鈕來執行2種不同的方法。 用戶單擊它時的一種方法,以及當用戶點擊它時的另一種方法(不同)。Android:長按一下按鈕 - >執行動作

我用這個單一的短按一下(這偉大工程):

Button downSelected = (Button) findViewById(R.id.downSelected); 
     downSelected.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       method(); 
       } 
      } 

     }); 

我試圖添加longClickListener,但沒有奏效。

欣賞關於如何解決此問題的任何想法。

謝謝!

+1

你應該發佈你的完整代碼,你用OnLongClickListener – schwiz 2010-12-09 20:26:55

回答

85

我以前做過,我只是用:

down.setOnLongClickListener(new OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      // TODO Auto-generated method stub 
      return true; 
     } 
    }); 

每文檔:

公共無效setOnLongClickListener (View.OnLongClickListener L)

從以下版本開始:API級別1註冊回調當這個視圖是 被點擊並保持時,被調用。如果此視圖不是可長期點擊的 ,則會變爲長可點擊的 。

請注意,它需要返回一個布爾值,這應該工作。

-2

嘗試使用ontouch監聽器而不是clicklistener。

http://developer.android.com/reference/android/view/View.OnTouchListener.html

+1

進行長時間點擊還是兩者都嘗試過? – 2010-12-09 20:31:14

+0

這個答案描述不夠有用。你會如何建議onTouchListener用於檢測長時間點擊? – 2012-10-04 14:39:50

+0

我同意西蒙 - 然而;你可以計算MotionEvent.DOWN和MotionEvent.UP之間的時間 – else 2017-07-31 15:18:24

10

最初當我實現了一個longClick和一個點擊來執行兩個單獨的事件時,我面對的問題是當我有一個longclick時,應用程序還執行了一個簡單的點擊操作。我意識到的解決方案是將longClick的返回類型更改爲true,默認情況下通常爲false。改變它,它完美的作品。

13

要獲得將要短期和長期響應點擊一個可點擊的圖像加工兩個功能,我試過,似乎完美地工作如下:

image = (ImageView) findViewById(R.id.imageViewCompass); 
    image.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      shortclick(); 
     } 
    }); 

    image.setOnLongClickListener(new View.OnLongClickListener() { 
    public boolean onLongClick(View v) { 
     longclick(); 
     return true; 
    } 
}); 

//那麼函數調用:

public void shortclick() 
{ 
Toast.makeText(this, "Why did you do that? That hurts!!!", Toast.LENGTH_LONG).show(); 

} 

public void longclick() 
{ 
Toast.makeText(this, "Why did you do that? That REALLY hurts!!!", Toast.LENGTH_LONG).show(); 

} 

看來,宣佈在XML的項目爲可點擊,然後定義一個函數,在點擊調用簡單的方法只適用於短點擊 - 你必須有一個聽衆短期和長期點擊之間進行區分。