如何解决Kotlin:Android EditText Left Drawable的Click事件
以下代码用于单击右侧,我将左侧Drawable上的Clickon EditText更改为什么?
fun EditText.onRightDrawableClicked(onClicked: (view: EditText) -> Unit) {
this.setOnTouchListener { v,event ->
var hasConsumed = false
if (v is EditText) {
if (event.x >= v.width - v.totalPaddingRight) {
if (event.action == MotionEvent.ACTION_UP) {
onClicked(this)
}
hasConsumed = true
}
}
hasConsumed
}
}
解决方法
您应将此event.x >= v.width - v.totalPaddingRight
更改为event.x <= v.totalPaddingLeft
。如果仍然缺少,您可以随时添加可绘制对象的大小
您应该使用这样的可绘制范围
setOnTouchListener { v,event ->
if (event.action == MotionEvent.ACTION_DOWN) {
if ((event.rawX + paddingRight )>= (right - (compoundDrawables.getOrNull(DRAWABLE_RIGHT)?.bounds?.width()
?: 0))
) {
// right drawable clicked
} else if (event.rawX - paddingLeft <= ((compoundDrawables.getOrNull(DRAWABLE_LEFT)?.bounds?.width()
?: 0) + left)
) {
// left drawable clicked
}
}
false
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。