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

Android(Kotlin):如何让EditText的numberPassword首字符不应用过滤?

实现EditText首字符可见的密码显示效果

要实现设置了android:inputType="numberPassword"的EditText仅隐藏除第一个字符外的内容,你需要自定义密码转换方法,替换系统默认的PasswordTransformationMethod。以下是具体实现步骤:

1. 自定义密码转换类

创建一个继承自PasswordTransformationMethod的类,重写getTransformation方法,对字符进行差异化处理:

import android.text.method.PasswordTransformationMethod
import android.view.View
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.content.Context

class FirstCharVisiblePasswordTransformationMethod : PasswordTransformationMethod() {
    // 定义密码掩码,这里用星号*,也可以替换成系统默认的圆点(●)
    private val maskChar = '*'

    override fun getTransformation(source: CharSequence?, view: View?): CharSequence {
        source ?: return ""
        
        val length = source.length
        if (length == 0) return source
        
        // 构建转换后的字符序列:首字符保留,其余用掩码替换
        val transformedContent = CharArray(length) { index ->
            if (index == 0) source[index] else maskChar
        }.let { SpannableString(it) }
        
        // 可选:统一字符颜色,避免首字符和掩码出现颜色差异
        view?.let {
            val textColor = (it.context as Context).resources.getColor(android.R.color.primary_text_dark, null)
            transformedContent.setSpan(
                ForegroundColorSpan(textColor),
                0,
                length,
                SpannableString.SPAN_INCLUSIVE_INCLUSIVE
            )
        }
        
        return transformedContent
    }
}

2. 为EditText绑定自定义转换方法

在Activity或Fragment中,找到目标EditText并设置自定义转换逻辑:

val passwordEditText = findViewById<EditText>(R.id.your_password_edittext_id)
passwordEditText.transformationMethod = FirstCharVisiblePasswordTransformationMethod()

关键说明

  • 输入限制仍生效:android:inputType="numberPassword"的数字输入限制会保留,自定义逻辑仅修改显示效果,不影响输入规则。
  • 适配系统掩码:如果想使用系统默认的密码圆点(●),只需把maskChar替换为PasswordTransformationMethod.getInstance().getTransformation(" ", null)[0]即可。
  • 边界情况兼容:空输入、单字符输入的场景会自动适配,不会出现异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:06:24