设置XML隐藏属性仍显示,如何隐藏带密码图标的TextInputEditText?
解决TextInputEditText密码可见图标无法隐藏的问题
首先要明确:密码可见切换的眼睛图标是TextInputLayout的控件特性,不是TextInputEditText本身的,所以直接在EditText上设置属性无效,得操作它的父布局TextInputLayout。
下面是具体解决方法:
1. XML布局中直接隐藏
确保你的布局是TextInputLayout包裹TextInputEditText的结构,然后给TextInputLayout添加属性:
<com.google.android.material.textfield.TextInputLayout ... app:endIconMode="none"> <com.google.android.material.textfield.TextInputEditText ... android:inputType="textPassword"/> </com.google.android.material.textfield.TextInputLayout>
app:endIconMode="none"会直接隐藏TextInputLayout右侧的所有内置图标,包括密码切换的眼睛图标。
2. 代码中动态控制
如果需要在运行时根据逻辑隐藏/显示图标,可调用TextInputLayout的方法:
// 隐藏图标 textInputLayout.setEndIconMode(TextInputLayout.END_ICON_NONE); // 恢复密码切换图标(如果需要) // textInputLayout.setEndIconMode(TextInputLayout.END_ICON_PASSWORD_TOGGLE);
3. 排查常见坑
- 不要给TextInputEditText设置
passwordToggleEnabled这类属性,这个属性属于TextInputLayout,设置在EditText上完全无效。 - 检查代码中是否有其他逻辑覆盖了XML的设置:比如在Activity/Fragment初始化时,有没有调用
setEndIconMode或者相关方法,导致XML的配置被覆盖。 - Android 6兼容性:确保你引入的Material Components库版本适配Android 6,建议使用
com.google.android.material:material:1.4.0这类稳定版本,避免高版本库在旧系统上的兼容性问题。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

