Вызов кнопки Capture на Android
Можно ли снять выделение кнопки так же, как мы снимаем клик с помощью onClickListener()
и OnClick()
?
Я хочу увеличить размер кнопки при нажатии и переместить ее обратно к исходному размеру при отпускании клика. Может ли кто-нибудь помочь мне, как это сделать?
Ответы
Ответ 1
Вы должны установить 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();
}
}
};
Ответ 2
Вы также должны обрабатывать 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();
}
}
};
Ответ 3
используйте вместо этого OnTouchListener или OnKeyListener.
Ответ 4
Возможно, вы сможете сделать это, переопределив onKeyDown
и onKeyUp
. Они оба унаследованы от android.widget.TextView
. См. android.widget.Button
doc для (немного) дополнительной информации.
Ответ 5
Эрик Нордвик имеет правильный ответ, за исключением того, что
event.getAction() == MotionEvent.ACTION_UP
никогда не был выполнен для меня. Вместо этого я реализовал
button.setOnClickListener(new OnClickListener() {
@Override
public boolean onClick(View v) {
resetSize();
}
};
для сенсорного ACTION_UP.