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

Lio*_*luz 57 android

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

我用它来进行单击(这非常有效):

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

        });
Run Code Online (Sandbox Code Playgroud)

我试图添加一个longClickListener但它没有用.

欣赏有关如何解决这个问题的任何想法.

谢谢!

bli*_*uff 111

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

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

每个文件:

public void setOnLongClickListener(View.OnLongClickListener l)

从以下版本开始:API Level 1注册单击并保持此视图时要调用的回调.如果此视图不能长时间点击,则可以长时间点击.

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

  • 哦,没关系,只需要将返回false更改为true :) (8认同)

小智 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;
    }
});
Run Code Online (Sandbox Code Playgroud)

//然后调用的函数:

 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();

}
Run Code Online (Sandbox Code Playgroud)

似乎将XML中的项目声明为可点击,然后定义要在点击上调用的函数的简单方法仅适用于短期点击 - 您必须有一个监听器来区分短期和长期点击.


Sai*_*esh 16

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