Использование кнопок setOnTouchListener и setOnClickListener для кнопки - PullRequest
1 голос
/ 23 мая 2019

У меня есть функция, которая уменьшает размер представления на ACTION_DOWN и возвращает его к исходному размеру на ACTION_UP. Эта функция строго для эстетики. Я установил на кнопки setOnClickListeners, чтобы они (теоретически ...) могли выполнять код при нажатии кнопки.

private fun scaleButton(theButton:View, grow:Boolean){
    theButton.setOnTouchListener(View.OnTouchListener { v, event ->
        if (event.action == MotionEvent.ACTION_DOWN) {
            v.isPressed = true

            if (grow) {
                v.animate().scaleX(1.04F).scaleY(1.04F).setDuration(50)
            } else {
                v.animate().scaleX(0.97F).scaleY(0.97F).setDuration(50)
            }

        } else if (event.action == MotionEvent.ACTION_UP) {
            v.isPressed = false
            v.animate().scaleX(1.0F).scaleY(1.0F).setDuration(100)
        }
        false
    })
}

Проблема в том, что setOnClickListener никогда не вызывается.

OnCreate:

scaleButton(button1,false)
scaleButton(button2,true)
scaleButton(button3,false)

button1.setOnClickListener {
    println("Button 1 Pressed")
}
button2.setOnClickListener {
    println("Button 2 Pressed")
}
button3.setOnClickListener {
    println("Button 3 Pressed")
}

Как я могу одновременно масштабировать кнопку с помощью анимации (на ощупь) И триггера setOnClickListener

1 Ответ

3 голосов
/ 23 мая 2019

Ваш слушатель щелчков никогда не сработает, потому что слушатель касания должен сообщить системе, когда был нажат элемент.Твой нет.Либо добавьте executeClick в соответствующее время, либо поместите все в сенсорный приемник и выполните щелчок на action_up

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...