Подтвердить что ты не робот

Вызов кнопки Capture на Android

Можно ли снять выделение кнопки так же, как мы снимаем клик с помощью onClickListener() и OnClick()?

Я хочу увеличить размер кнопки при нажатии и переместить ее обратно к исходному размеру при отпускании клика. Может ли кто-нибудь помочь мне, как это сделать?

4b9b3361

Ответ 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.