按住一个按钮重复动作 - 是否有一个android:onClick for hold? (在XML文件中)

时间:2014-07-09 04:35:12

标签: java android xml button

希望问题说明一切......我一直在网上搜索一个简单的解决方案,我很惊讶地看到它没有?我希望这是一个基本的功能,我可以添加到XML文件中?我们欢迎替代方案,但我已经知道他们会在那里。我只想知道这种简单的方法是否可行(似乎无法在文档中找到任何内容但谁知道)

3 个答案:

答案 0 :(得分:1)

您可以设置OnLongClickListener,如

btn.setOnLongClickListener(new OnLongClickListener() {

@Override
public boolean onLongClick(View v) {
---code here---
return false;
}
});

或者您可以在按钮

上设置onTouchListner
btn.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {

switch(event.getAction())
{
case MotionEvent.ACTION_UP:
---code here---
break;
case MotionEvent.ACTION_DOWN:
---code here---
break;
}
});

我不知道如何从xml

设置onLongClickListner

答案 1 :(得分:0)

您可以将OnLongClickListener()用于Button

请点击此链接阅读更多相关信息......

View.OnLongClickListener

示例:

Examples for android.view.View.OnLongClickListener

答案 2 :(得分:0)

没有任何默认方式可以做到这一点。但是使用onTouch()事件可以很容易地实现这一点。以下代码将在您触摸按钮时每0.5秒重复一次任务。释放按钮时,任务将被取消。

Handler repeatedHandler = new Handler();
Runnable newRunnable = new Runnable() {
    @Override 
    public void run() {
      //Code for the task that needs to be repeated
      //...
      //...
      repeatedHandler.postDelayed(newRunnable, 500);
    }
  };

button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
            repeatedHandler.postDelayed(newRunnable, 500);
            break;
            case MotionEvent.ACTION_UP:
            repeatedHandler.removeCallbacks(newRunnable);
            break;
        }
    }
});