【发布时间】:2010-09-24 05:46:20
【问题描述】:
是否可以像使用onClickListener() 和OnClick() 捕获点击一样捕获按钮的释放?
我想在按下按钮时增加按钮的大小,并在释放单击时将其移回原始大小。谁能帮我怎么做?
【问题讨论】:
是否可以像使用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();
}
}
};
【讨论】:
event.getAction(),否则你会得到一个不兼容的操作数类型错误。我同意这应该是公认的答案,请投赞成票:)
您还必须处理 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。
【讨论】:
您可以通过覆盖onKeyDown 和onKeyUp 来做到这一点。这些都继承自android.widget.TextView。请参阅android.widget.Button doc 了解更多信息。
【讨论】:
Eric Nordvik 有正确的答案,除了
event.getAction() == MotionEvent.ACTION_UP
从来没有为我被处决。相反,我确实实现了
button.setOnClickListener(new OnClickListener() {
@Override
public boolean onClick(View v) {
resetSize();
}
};
对于触摸 ACTION_UP。
【讨论】: