You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 08:22:40