passwordToggleEnabled 设置为 true 但不起作用
passwordToggleEnabled set to true but not working
我希望将 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"
我希望将 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"