passwordToggleEnabled имеет значение true, но не работает - PullRequest
1 голос
/ 09 июля 2020

Я хочу использовать passwordToggleEnabled с TextInputLayout и TextInputEditText. У меня проблема в том, что значок появляется, но при нажатии на него ничего не происходит. Кажется, что щелчок по нему просто перефокусирует на TextInputEditText, а не разоблачает пароль. Я думаю об этом, потому что указатель под курсором будет очень быстро мигать светлее, а затем вернуться к цвету по умолчанию, как если бы я щелкал в фокусированном EditText.

Я использую настраиваемый фон для TextInputEditText, чтобы иметь белые круглые пузыри при вводе информации, но я понял, что белый фон в моем настраиваемом чертеже закрывает значок. Итак, когда поле сфокусировано, пузырек теперь имеет обводку и прозрачный фон, поэтому значок становится видимым.

Я попытался полностью удалить фон, но значок по-прежнему ничего не сделал.

Вот пользовательский фон (Round_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

Пароль ориентирован

Что-то мне не хватает? Я смотрел несколько видеороликов на YouTube, которые, кажется, делают это так же, как и здесь, и более старая версия этого кода также имеет много того же, и она работает. Спасибо!

1 Ответ

1 голос
/ 10 июля 2020

Удалите android:elevation="@dimen/_10sdp" из TextInputEditText

С высотой

enter image description here

Without elevation

введите описание изображения здесь

Это не связано с вашей проблемой, но используйте:

  app:endIconMode="password_toggle"
  app:endIconTint="@color/..."

вместо:

    app:passwordToggleEnabled="true"
    app:passwordToggleTint="@color/main_purple"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...