求助:Material 1.4.0下EditText的endIconMode属性失效,图标不显示
解决Material组件endIconMode不显示的问题
问题根源
你用的是原生EditText,但app:endIconMode是Material Design组件库中TextInputLayout的专属属性,原生EditText不支持这个配置,所以哪怕换版本、手动加图标也没用。
修复步骤
- 替换控件结构:必须用
TextInputLayout包裹TextInputEditText(Material版的EditText),把endIconMode属性移到TextInputLayout上。 - 调整背景设置:移除
EditText的android:background,把自定义背景配置到TextInputLayout上,避免和Material组件的内置样式冲突。
修改后的完整布局代码
<com.google.android.material.textfield.TextInputLayout android:id="@+id/inputLayoutLogin" android:layout_width="332dp" android:layout_height="wrap_content" android:hint="Введите логин или почту" app:endIconMode="clear_text" app:boxBackgroundMode="none" app:boxBackgroundDrawable="@drawable/custom_input" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.497" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.411"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/editTextlgn" android:layout_width="match_parent" android:layout_height="48dp" android:ems="10" android:inputType="text" android:paddingStart="12dp" android:paddingEnd="12dp" android:textColor="@color/white" android:textColorHighlight="#FFFFFF" android:textColorHint="#FFFFFF" android:textColorLink="#FFFFFF" android:textCursorDrawable="@drawable/custom_cursor" android:textSize="20sp" /> </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.textfield.TextInputLayout android:id="@+id/inputLayoutPassword" android:layout_width="332dp" android:layout_height="wrap_content" android:layout_marginTop="12dp" android:hint="Введите пароль" app:endIconMode="password_toggle" app:boxBackgroundMode="none" app:boxBackgroundDrawable="@drawable/custom_input" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.493" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/inputLayoutLogin"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/editTextPassword" android:layout_width="match_parent" android:layout_height="48dp" android:ems="10" android:inputType="textPassword" android:paddingStart="12dp" android:paddingEnd="12dp" android:textColor="@color/white" android:textColorHint="#FFFFFF" android:textCursorDrawable="@drawable/custom_cursor" android:textSize="20sp" /> </com.google.android.material.textfield.TextInputLayout>
额外注意事项
- 如果需要修改切换图标的颜色,可添加
app:endIconTint="@color/your_color"到TextInputLayout。 - 1.4.0版本的Material库完全支持该配置,无需盲目升级。
- 确保App主题继承自Material主题(比如
Theme.MaterialComponents.DayNight.DarkActionBar),否则Material组件样式可能失效。
内容的提问来源于stack exchange,提问作者For complaints
相关产品推荐
相关产品推荐

