android - 在按钮上同时使用 setOnTouchListener 和 setOnClickListener

标签 android kotlin

我有一个函数可以在 ACTION_DOWN 时缩小 View 的大小,并在 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 从未被调用。

创建时:

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

最佳答案

您的点击监听器永远不会触发,因为触摸监听器应该在元素被点击时通知系统。你的不是。要么在适当的时候添加一个 performClick,要么将所有内容都放入触摸监听器中并执行 action_up 上的点击

关于android - 在按钮上同时使用 setOnTouchListener 和 setOnClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265376/

相关文章:

php - Android 图片上传到服务器,HTTP 响应为 200,但文件未上传

java - Android 区域设置在运行时不会(完全)改变

用于检测 Google map 方向何时完成的 Android 应用程序

android - 如何更改按钮 MaterialToolbar 的背景颜色?

android - 如何在服务器端的电话应用程序中使用 json?

android - 无法初始化 OpenGL 渲染器库

kotlin - HiveMQ MQTT 客户端 : subscribe to multiple topics

kotlin - 猫王对偶:如果不为null,这样做吗?

android - Kotlin OnTouchListener 已调用,但未覆盖 performClick

kotlin - 执行org.jetbrains.kotlin.gradle.internal.KaptExecution Room数据库时发生故障