我想使用相同的按钮来执行2种不同的方法。 用户单击它时的一种方法和用户LONG点击它时的第二种方法(不同)。
我使用它进行单击(效果很好):
Button downSelected = (Button) findViewById(R.id.downSelected);
downSelected.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
method();
}
}
});
我尝试添加一个longClickListener,但它没有用。
欣赏有关如何解决此问题的任何想法。
谢谢!
答案 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