android - passwordToggleEnabled 设置为 true 但不起作用

标签 android xml android-textinputlayout material-components-android

我希望将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>

还有一些屏幕截图来完善问题:

Full Layout

Password focused

我有什么遗漏的吗?我看过一些 YouTube 视频,这些视频似乎与我在这里的方式相同,并且此代码的​​旧版本也有很多相同的内容并且它正在工作。谢谢!

最佳答案

删除 TextInputEditText 中的 android:elevation="@dimen/_10sdp"

标高

enter image description here

没有海拔

enter image description here

它与您的问题无关,但使用:

  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/

相关文章:

android - actionNext 不会滚动显示最后一个 TextInputLayout

android 无法在 4.2 上添加辅助功能

java - 适配器如何处理android中的空arrayList?

xml - SAPUI5:没有在 XML View 中创建动态过滤器的选项?

c# - 将 XmlDocument 中的节点集替换为另一个 XmlDocument 文件

android - TextInputLayout EditText nextFocusRight 不能正常工作

android - 解析数组列表时出错

java - Dalvik 堆栈深度不匹配 - 错误代码 1

java - JAXB:解码并不总是填充某些类?

android - AutoCompleteTextView float 提示