Android:长按一下button – >执行操作

我想用同一个button来执行2种不同的方法。 一个用户单击它的方法,另一个方法(不同)当用户点击它。

我用这个单一的短按(这很好):

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

我试图添加一个longClickListener,但它没有工作。

欣赏关于如何解决这个问题的任何想法。

谢谢!

我之前做过,我只是用了:

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

每个文档:

public void setOnLongClickListener(View.OnLongClickListener l)

从以下版本开始:API级别1单击并保持此视图时,注册要调用的callback。 如果这个视图不是可以长时间点击的,就会变成可以长时间点击的。

注意它需要返回一个布尔值,这应该工作。

为了让这两个函数适用于可点击的图片,这些图片会对短时和长时间的点击做出反应,我尝试了下面这种看起来完美的方法:

  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中的项目声明为可点击,然后定义调用点击的函数的简单方法仅适用于短点击 – 您必须具有侦听器来区分短点击和长点击。

最初当我实现了longClick和点击来执行两个单独的事件时,我面对的问题是,当我有一个longclick,应用程序还执行了一个简单的点击执行的操作。 我意识到的解决scheme是将longClick的返回types更改为true,默认情况下这通常是false。 改变它,它完美的作品。

尝试使用ontouch监听器而不是clicklistener。

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