Kotlin实现Android EditText左侧Drawable点击事件(基于右侧代码修改)
修改EditText右侧Drawable点击为左侧的实现方法
嘿,其实只需要调整两处关键地方就能搞定左侧Drawable的点击事件,我给你拆解清楚:
核心修改点
- 函数名语义优化:把原函数名
onRightDrawableClicked改成onLeftDrawableClicked,让函数用途一目了然,避免后续维护时混淆。 - 触摸区域判断逻辑替换:原代码判断的是点击位置是否落在右侧Drawable区域,我们要改成左侧区域的判断:
原判断条件:event.x >= v.width - v.totalPaddingRight
修改后条件:event.x <= v.totalPaddingLeft
这里的totalPaddingLeft包含了EditText左侧的内边距加上左侧Drawable的宽度,所以这个范围内的点击就对应左侧Drawable的操作。
修改后的完整代码
fun EditText.onLeftDrawableClicked(onClicked: (view: EditText) -> Unit) { this.setOnTouchListener { v, event -> var hasConsumed = false if (v is EditText) { // 判断点击位置是否在左侧Drawable区域内 if (event.x <= v.totalPaddingLeft) { if (event.action == MotionEvent.ACTION_UP) { onClicked(this) } hasConsumed = true } } hasConsumed } }
这样修改后,当用户点击EditText左侧的Drawable时,就会触发你传入的onClicked回调啦~
内容的提问来源于stack exchange,提问作者Lina
相关产品推荐
相关产品推荐

