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"