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

如何在EditText中根据输入长度控制左侧Drawable的显示与隐藏?

哥们我懂你!找了一堆Stack答案都没解决,就是想让EditText输入内容长度刚好是11位时,左侧的Drawable显示出来对吧?这就给你上靠谱的实现方案!

具体实现步骤

1. 先搞定布局里的EditText

首先确保你的EditText在布局文件里已经配置了要显示的左侧Drawable,默认咱们先让它隐藏着:

<EditText
    android:id="@+id/targetEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="请输入11位内容"
    android:drawableStart="@drawable/your_icon_drawable" <!-- 替换成你的图标资源 -->
    android:drawablePadding="10dp"
    android:inputType="text" /> <!-- 如果是手机号可以设成phone,过滤非数字 -->

2. 给EditText加文本监听逻辑

核心就是用TextWatcher监听输入内容的变化,在文本改变后判断长度是否等于11,动态控制Drawable的显示/隐藏:

EditText editText = findViewById(R.id.targetEditText);

// 初始化时先把左侧Drawable隐藏
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);

editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // 这个回调暂时用不上,留空就行
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // 这里也可以处理,但afterTextChanged更适合判断最终输入长度
    }

    @Override
    public void afterTextChanged(Editable s) {
        int inputLen = s.length();
        // 获取你要显示的左侧Drawable,用ContextCompat避免版本兼容问题
        Drawable leftIcon = ContextCompat.getDrawable(MainActivity.this, R.drawable.your_icon_drawable);
        if (leftIcon != null) {
            // 给Drawable设置边界,不然可能显示不出来
            leftIcon.setBounds(0, 0, leftIcon.getIntrinsicWidth(), leftIcon.getIntrinsicHeight());
        }

        // 判断长度是否为11,决定显示还是隐藏图标
        if (inputLen == 11) {
            editText.setCompoundDrawables(leftIcon, null, null, null);
        } else {
            editText.setCompoundDrawables(null, null, null, null);
        }
    }
});

3. 几个要注意的小细节

  • 如果你的项目用了AndroidX,记得导入androidx.core.content.ContextCompat这个类,不然ContextCompat.getDrawable()会报错。
  • 要是只允许输入数字(比如手机号场景),可以把EditText的android:inputType设为phone或者number,这样用户只能输入数字,避免非数字内容干扰长度判断。
  • 确保你的Drawable资源尺寸合适,太大或太小都会影响显示效果,建议用矢量图适配不同分辨率的设备。

内容的提问来源于stack exchange,提问作者The MJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:17:43