如何解决Button的长按事件不起作用
我想在OnLongClickListener
中使用简单的ImageButton
。如果按住按钮的时间更长,只要按住按钮,它就可以在内部重复执行功能。
我是这样做的:
button.setOnLongClickListener {
actionOnButtonClick()
false
}
但是如果我按住按钮,它将无法正常工作。 actionOnButtonClick()
仅在按下按钮时被调用一次。
有什么问题吗?
解决方法
返回true
而不是返回false
来消耗事件。
您长按此按钮,如果它返回true,则它将完成工作。如果它返回false,则它将完成其工作并调用快捷键,然后onClick也将起作用。
,您可以设置OnTouchListener
并检查何时按下按钮,并保持检查直到按钮释放:
private val handler = Handler()
private lateinit var runnable: Runnable
private val longClickDelay = 2000L //milliseconds
private val updateDelay = 500L //milliseconds
//...
var isPressed = false
button.setOnTouchListener { v,event ->
if (event.action == MotionEvent.ACTION_DOWN) {
isPressed = true
handler.postDelayed(runnable,longClickDelay)
} else if (event.action == MotionEvent.ACTION_UP)
isPressed = false
v.performClick()
}
runnable = Runnable {
if (isPressed) {
//call your function here
handler.postDelayed(runnable,updateDelay)
}
}
该函数在按下(longClickDelay
)2秒后调用,并每500毫秒(updateDelay
)更新一次。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。