Android中app:passwordToggleEnabled不显示问题求助
密码切换按钮不显示的解决指引
问题说明
作为Android开发新手,开发登录功能时,已在com.google.android.material.textfield.TextInputLayout中设置app:passwordToggleEnabled="true"和app:passwordToggleTint属性,但密码切换按钮始终不显示,相关代码如下:
XML布局代码
<com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" app:passwordToggleEnabled="true" app:passwordToggleTint="@color/blue" style="@style/Widget.Material3.TextInputLayout.OutlinedBox"> <com.google.android.material.textfield.TextInputEditText android:layout_width="match_parent" android:layout_height="50dp" android:hint="@string/contrase_a" android:inputType="textPassword"/> </com.google.android.material.textfield.TextInputLayout>
Gradle依赖配置
implementación(platform("com.google.firebase:firebase-bom:33.1.1")) implementation("com.google.firebase:firebase-analytics") implementation("com.google.firebase:firebase-auth: 22.1.1") implementation("com.google.android.material:material:1.12.0") implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.ui) implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) implementation("androidx.core:core-splashscreen:1.0.1") implementation(libs.androidx.constraintlayout) implementation(libs.androidx.appcompat) implementation(libs.material) implementation(libs.androidx.activity) implementation(libs.firebase.auth.ktx)
styles.xml代码
<style name="GFSTextInputLayoutTheme" parent="Widget.Material3.TextInputLayout.OutlinedBox"> <!-- Hint color and label color in FALSE state --> <item name="android:textColorHint">@color/light_grey</item> <!-- Label color in TRUE state and bar color FALSE and TRUE State --> <item name="colorAccent">@color/light_grey</item> <item name="colorControlNormal">@color/light_grey</item> <item name="colorControlActivated">@color/light_blue</item> </style>
解决步骤
- 确认输入类型正确性:确保
TextInputEditText的android:inputType设置为textPassword或textWebPassword,这是密码切换按钮显示的前提条件,当前代码已设置正确,但需避免额外设置TransformationMethod覆盖默认行为。 - 统一Material库依赖:Gradle中同时存在
com.google.android.material:material:1.12.0和libs.material两个Material库依赖,属于重复依赖,可能引发组件样式冲突。删除其中一个,建议保留明确版本的依赖项,确保版本统一。 - 检查主题兼容性:当前使用的是Material3的
Widget.Material3.TextInputLayout.OutlinedBox样式,需确认应用的全局主题是否继承自Material3主题(如Theme.Material3.DayNight.NoActionBar),非Material3主题可能导致Material3组件样式异常。 - 验证按钮可见性:检查
app:passwordToggleTint设置的@color/blue是否与TextInputLayout的背景色对比度不足,导致按钮“隐身”。可临时将颜色改为@color/red这类高对比度颜色测试是否显示。 - 应用自定义样式:尝试将TextInputLayout的
style属性改为自定义的@style/GFSTextInputLayoutTheme,而非默认的Material3样式,排查是否是默认样式的属性覆盖导致按钮不显示。
内容的提问来源于stack exchange,提问作者Carlo Mena Mendez
相关产品推荐
相关产品推荐

