在Android中捕获按钮发布

是否可以捕获按钮的释放,就像我们使用onClickListener()OnClick()捕获点击一样?

我希望在按下按钮时增加按钮的大小,并在释放按钮时将其移回原始大小。 任何人都可以帮我怎么做?

您应该在按钮上设置OnTouchListener。

 button.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_DOWN) { increaseSize(); } else if (event.getAction() == MotionEvent.ACTION_UP) { resetSize(); } } }; 

您还必须处理MotionEvent.ACTION_CANCEL。 所以代码将是:

 button.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { increaseSize(); } else if (event.getAction() == MotionEvent.ACTION_UP) { resetSize(); } } }; 

改为使用OnTouchListener或OnKeyListener。

您可以通过覆盖onKeyDownonKeyUp来实现此目的。 这些都是从android.widget.TextViewinheritance的。 请查看android.widget.Button doc (更多信息)。

除此之外,Eric Nordvik有正确的答案

 event.getAction() == MotionEvent.ACTION_UP 

从来没有为我执行过。 相反,我确实实施了

  button.setOnClickListener(new OnClickListener() { @Override public boolean onClick(View v) { resetSize(); } }; 

触摸ACTION_UP。