Android:长按一下按钮 - >执行操作

时间:2010-12-09 20:20:34

标签: android

我想使用相同的按钮来执行2种不同的方法。 用户单击它时的一种方法和用户LONG点击它时的第二种方法(不同)。

我使用它进行单击(效果很好):

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

        });

我尝试添加一个longClickListener,但它没有用。

欣赏有关如何解决此问题的任何想法。

谢谢!

6 个答案:

答案 0 :(得分:103)

我以前做过,我只是用过:

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注册回调   在此视图时调用   点击并按住。如果这个观点不是   长时间点击,它变得很长   点击。

请注意,它需要返回一个布尔值,这应该可以。

答案 1 :(得分:17)

为了使这两个功能都适用于可以响应短期和长期点击的可点击图像,我尝试了以下似乎完美的工作:

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

答案 2 :(得分:13)

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

答案 3 :(得分:1)

在longClickListener中将return false;更改为return true;

您长按此按钮,如果它返回true,则它将完成工作。如果它返回false,则说明它可以正常工作,也可以调用快捷键,然后onClick也可以。

答案 4 :(得分:-1)

最简单和更新的方法是使用长点击监听器

someView.setOnLongClickListener {
        //do your work 
        true
    }

答案 5 :(得分:-2)

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

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