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

EditText密码切换按钮无法显示明文密码问题求助

解决TextInputLayout密码切换按钮无法显示明文的问题

我来帮你一步步排查这个问题:

1. 确认EditText的inputType设置正确

TextInputLayout的密码切换功能必须依赖EditText设置了正确的密码类型inputType,如果你的EditText没设置或者设置错误,Toggle按钮点击后不会切换明文/密文。

你需要确保EditText的属性里包含:

android:inputType="textPassword"

如果是网页场景的密码,也可以用textWebPassword,核心是要指定密码类的inputType。

完整的正确布局示例应该是这样的:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:textColorHint="@color/primary_dark"
    android:id="@+id/edit_inputPassword"
    app:passwordToggleEnabled="true"
    app:passwordToggleTint="@color/primary_dark">

    <!-- EditText必须是TextInputLayout的直接子View,且配置正确的inputType -->
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="textPassword"/>

</android.support.design.widget.TextInputLayout>

2. 排查自定义passwordToggleDrawable的问题

你代码里用了app:passwordToggleDrawable="@drawable/ic_remove_red_...",这个自定义drawable大概率是问题所在:

  • 可能没有配置状态选择器(比如缺少state_checked状态的图标),导致点击后没有视觉反馈,甚至影响功能触发;
  • 资源文件损坏或者路径错误。

建议先暂时注释掉这个属性,用系统默认的Toggle图标测试:

<!-- 先注释掉自定义drawable,用默认图标验证功能 -->
<!-- app:passwordToggleDrawable="@drawable/ic_remove_red_..." -->

如果此时Toggle按钮能正常切换明文,那就是你自定义的drawable有问题,需要给它添加状态选择器。比如创建一个password_toggle_selector.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_show_password" android:state_checked="true"/>
    <item android:drawable="@drawable/ic_hide_password"/>
</selector>

然后把app:passwordToggleDrawable指向这个selector文件即可。

3. 确保EditText是TextInputLayout的直接子View

TextInputLayout的密码切换功能要求EditText必须是它的直接子元素,不能把EditText嵌套在LinearLayout等其他布局里,否则TextInputLayout无法正确关联EditText的输入状态。

4. 检查依赖库和编译版本匹配

你使用的是com.android.support:design:27.0.2,请确保项目模块的build.gradle里的compileSdkVersion和targetSdkVersion也是27(和依赖库版本一致),版本不匹配可能导致控件功能异常。

示例配置:

android {
    compileSdkVersion 27
    defaultConfig {
        targetSdkVersion 27
        // ...其他配置项
    }
}

按照上面的步骤逐一排查,应该就能解决密码切换按钮无法显示明文的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:34:33