执行正常单击和长按按钮

时间:2013-09-20 07:34:26

标签: android button

我有一个名为CheckIn的按钮。看看我的代码。

    checkIn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

       Toast.makeText(HomeSafeActivity.this, "Normal Press", Toast.LENGTH_LONG).show();

    });


    checkIn.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {

            Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_LONG).show();



            return false;
        }
    });

现在,当我正常按下按钮时,信息显示为正常按下。当我长按按钮时,信息显示为长按和正常按两者。我想要的是,当我长按按钮时,长按事件不应该触发正常的按键事件。我怎么能实现这个?

7 个答案:

答案 0 :(得分:41)

我得到了我的问题的解决方案。返回真实而不是假。见下文: -

    checkIn.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {

            Toast.makeText(HomeSafeActivity.this, "Long preess", Toast.LENGTH_LONG).show();

            return true;
        }
    });

答案 1 :(得分:12)

onLongClick() - 返回一个布尔值,表示您是否已经消耗了该事件,并且不应该进一步携带它。也就是说,return true表示你已经处理了这个事件,它应该在这里停止; return false如果您没有处理它和/或该事件应该继续使用任何其他on-click listeners

答案 2 :(得分:5)

如果长按

,您应该返回true

示例:

  btnBookingMasterCab.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            if(preCheckoutInfo!=null){
                rlChooseCard.setVisibility(View.VISIBLE);
            }
            return true;
        }
    });

答案 3 :(得分:1)

这是一个解决方案(如果(当两者都被触发时),首先是长按被触发,然后是正常按下,这将起作用:

int clickFlag = 0;
checkIn.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View v) {

    if(clickFlag != 2){
      Toast.makeText(HomeSafeActivity.this, "Normal Press", Toast.LENGTH_SHORT).show();
      clickFlag = 0;
    }

  });

  checkIn.setOnLongClickListener(new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {

      Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_SHORT).show();

      clickFlag = 2;
      return false;
    }
  });
}

答案 4 :(得分:0)

public boolean onLongClick(View v)boolean如果单击则返回true 所以让返回真实;

答案 5 :(得分:-1)

试试这个;它应该工作。

checkIn.setOnLongClickListener(new View.OnLongClickListener() {

    @Override
    public boolean onLongClick(View v) {

        checkIn.setOnClickListener(null);

        Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_LONG).show();

        return false;
    }
});

答案 6 :(得分:-3)

尝试android:onclick =“btnPressed”而不是OnClickListener并使用OnLongClickListener在我的测试代码中没问题