我希望将passwordToggleEnabled 与TextInputLayout 和TextInputEditText 一起使用。我遇到的问题是图标出现,但单击它时没有任何反应。看起来似乎单击它只是重新聚焦于 TextInputEditText,而不是揭开密码。我这样想是因为光标下方的指针会很快变亮,然后返回默认颜色,就像我在聚焦的 EditText 中单击一样。
我使用 TextInputEditText 的自定义背景,以便在输入信息时出现白色的圆形气泡,但我意识到自定义绘图中的白色背景覆盖了图标。因此,当字段聚焦时,气泡现在具有笔划和透明背景,因此图标可见。
我尝试完全删除背景,但图标仍然没有任何作用。
这是自定义背景(rounded_edit_text.xml):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false">
<layer-list>
<item android:top="@dimen/_3sdp">
<shape
android:shape="rectangle" android:padding="10dp">
<solid android:color="@color/white"/>
<corners
android:bottomRightRadius="30dp"
android:bottomLeftRadius="30dp"
android:topLeftRadius="30dp"
android:topRightRadius="30dp"/>
</shape>
</item>
</layer-list>
</item>
<item android:state_focused="true">
<layer-list>
<item android:top="@dimen/_3sdp">
<shape
android:shape="rectangle" android:padding="10dp">
<solid android:color="@color/Transparent"/>
<corners
android:bottomRightRadius="30dp"
android:bottomLeftRadius="30dp"
android:topLeftRadius="30dp"
android:topRightRadius="30dp"/>
<stroke
android:color="@color/evenlightergrey"
android:width="@dimen/_1sdp"/>
</shape>
</item>
</layer-list>
</item>
</selector>
这是布局的密码位:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/password_textInput"
android:layout_width="0dp"
android:layout_height="0dp"
android:clipToPadding="false"
android:clipChildren="false"
app:layout_constraintTop_toBottomOf="@id/email_bottom_guideline"
app:layout_constraintStart_toStartOf="@id/start_guideline"
app:layout_constraintEnd_toStartOf="@id/end_guideline"
app:layout_constraintBottom_toTopOf="@id/password_bottom_guideline"
app:hintTextAppearance="@style/PurpleFloatingHintStyle"
app:errorEnabled="true"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/main_purple">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password_editText"
android:layout_width="match_parent"
android:layout_height="@dimen/_32sdp"
android:textCursorDrawable="@drawable/main_purple_cursor"
android:elevation="@dimen/_10sdp"
android:importantForAutofill="no"
android:background="@drawable/rounded_edit_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_vertical|start"
android:inputType="textPassword"
android:textSize="@dimen/_16sdp"
android:paddingTop="@dimen/_3sdp"
android:paddingLeft="@dimen/_10sdp"
android:paddingRight="@dimen/_10sdp"
android:paddingStart="@dimen/_10sdp"
android:paddingEnd="@dimen/_10sdp"
android:hint="Password"
app:layout_constraintStart_toStartOf="@id/start_guideline"
app:layout_constraintEnd_toStartOf="@id/end_guideline"/>
</com.google.android.material.textfield.TextInputLayout>
还有一些屏幕截图来完善问题:
我有什么遗漏的吗?我看过一些 YouTube 视频,这些视频似乎与我在这里的方式相同,并且此代码的旧版本也有很多相同的内容并且它正在工作。谢谢!
最佳答案
删除 TextInputEditText
中的 android:elevation="@dimen/_10sdp"
标高
没有海拔
它与您的问题无关,但使用:
app:endIconMode="password_toggle"
app:endIconTint="@color/..."
而不是:
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/main_purple"
关于android - passwordToggleEnabled 设置为 true 但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62821194/