在按钮上同时使用setOnTouchListener和setOnClickListener

时间:2019-05-22 21:39:37

标签: android kotlin

我有一个函数可以缩小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 个答案:

答案 0 :(得分:3)

您的点击监听器将永远不会触发,因为应该将触摸监听器告知系统何时点击了元素。你不是。您可以在适当的时候添加一个performClick,或者将所有内容都放入触摸监听器中,然后在action_up上单击