android - 在按钮上同时使用 setOnTouchListener 和 setOnClickListener
问题描述
我有一个缩小视图大小的函数,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
是永远不会被调用。
创建:
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 上执行单击
推荐阅读
- scala - 如何将 Scala Spark Dataframe 转换为 LinkedHashMap[String, String]
- python - Python - 评估条件语句的每个条件
- excel - VBA - 如何从连接中清除连接字符串
- node.js - 使用 Google Cloud KMS 进行 Firebase 实时数据库加密的最佳做法
- c++11 - 有没有办法在模板参数列表中使用 type_traits 来改变类型?
- html - 具有页眉和页脚的外部容器的视差滚动
- asp.net-mvc - 返回与父文件夹和子文件夹中的参数文件名匹配的 MVC 视图
- r - 无法使用 Mac OS 安装 warbleR 包
- mysql - 这个 SQL 查询/连接可能吗?
- java - 组合多个 Single 的最有效方法是什么
- > 成为单曲
- >?