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

0tdrvxhp  于 2023-08-01  发布在  Android
关注(0)|答案(7)|浏览(133)

我想使用同一个按钮执行2种不同的方法。一种方法是用户单击它,第二种方法(不同)是用户长时间单击它。
我用这个来进行简短的点击(效果很好):

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

        });

字符串
我尝试添加一个longClickListener,但它不起作用。
感谢任何关于如何解决这个问题的想法。
谢谢你,谢谢

tsm1rwdh

tsm1rwdh1#

我以前做过,我只是用:

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

字符串
根据文件:
public void setOnLongClickListener(View.OnLongClickListener l)
Since:API Level 1注册一个回调,当点击并按住此视图时调用。如果此视图不是可长时间单击的,则变为可长时间单击的。
请注意,它需要返回一个布尔值,这应该可以工作。

quhf5bfb

quhf5bfb2#

为了让这两个函数都能为一个可点击的图像工作,它将对短点击和长点击都做出响应,我尝试了以下方法,看起来效果很好:

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中将项声明为可单击,然后定义一个函数在单击时调用的简单方法似乎只适用于短单击--必须有一个侦听器来区分短单击和长单击。

7eumitmz

7eumitmz3#

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

gdrx4gfi

gdrx4gfi4#

在longClickListener中将return false;更改为return true;
你长时间点击按钮,如果它返回true,那么它就工作了。如果它返回false,那么它就执行它的工作,并调用短点击,然后onClick也工作。

6mw9ycah

6mw9ycah5#

谢谢!!在Kotlin的作品是这样的:

binding.someView.setOnClickListener {
        Toast.makeText(this, "Simple click!!!", Toast.LENGTH_LONG).show()
        }

binding.someView.setOnLongClickListener {
    Toast.makeText(this, "Looong click!!!", Toast.LENGTH_LONG).show()
    true
    }

字符串

aiazj4mn

aiazj4mn7#

最简单和更新的方法是使用长单击侦听器,如

someView.setOnLongClickListener {
        //do your work 
        true
    }

字符串

相关问题