如果按下并释放Button
,我该如何倾听?
答案 0 :(得分:73)
您可以使用onTouchListener
:
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// PRESSED
return true; // if you want to handle the touch event
case MotionEvent.ACTION_UP:
// RELEASED
return true; // if you want to handle the touch event
}
return false;
}
});
答案 1 :(得分:5)
fiddler给出的答案对于通用视图是正确的。
对于Button
,您应该从触摸处理程序始终返回false
:
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// PRESSED
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// RELEASED
break;
}
return false;
}
});
如果您返回true
,则会绕过按钮的常规触摸处理。这意味着您将失去按下按钮和触摸波纹的视觉效果。此外,Button#isPressed()
会在实际按下按钮时返回false
。
按钮的常规触摸处理功能可确保您即使在返回false
时也能收到后续活动。
答案 2 :(得分:4)