Есть ли умный способ позволить пользователю переключаться между скрытием и просмотром пароля в Android EditText? Ряд приложений для ПК позволяет пользователю делать это.
176
Вы можете динамически изменять атрибуты TextView. Если вы установите для атрибута XML значение android:password
true, представление будет показывать точки, если вы установите значение false, текст будет показан.
С помощью метода setTransformationMethod вы сможете изменить эти атрибуты из кода. (Отказ от ответственности: я не проверял, работает ли метод после отображения представления. Если у вас возникли проблемы с этим, оставьте мне комментарий, чтобы я знал.)
Полный пример кода будет
yourTextView.setTransformationMethod(new PasswordTransformationMethod());
скрыть пароль Чтобы показать пароль, вы можете установить один из существующих методов преобразования или реализовать пустой TransformationMethod , который ничего не делает с вводимым текстом.
yourTextView.setTransformationMethod(new DoNothingTransformation());
setTransformationMethod(null)
.Это действительно легко сделать, так как Support Library v24.2.0.
Что вам нужно сделать, это просто:
Добавьте библиотеку дизайна в ваши зависимости
Используйте
TextInputEditText
в сочетании сTextInputLayout
passwordToggleEnabled
Атрибут будет делать эту работу!В свой корневой макет не забудьте добавить
xmlns:app="http://schemas.android.com/apk/res-auto"
Вы можете настроить переключение пароля с помощью:
app:passwordToggleDrawable
- Drawable для использования в качестве значка переключения видимости ввода пароля.app:passwordToggleTint
- Значок, используемый для переключения видимости ввода пароля.app:passwordToggleTintMode
- Режим наложения, используемый для применения оттенка фона.Более подробная информация в документации TextInputLayout .
Для AndroidX
Заменить
android.support.design.widget.TextInputLayout
наcom.google.android.material.textfield.TextInputLayout
Заменить
android.support.design.widget.TextInputEditText
наcom.google.android.material.textfield.TextInputEditText
источник
android:text
атрибутомTextInputEditText
. Вы всегда можете поднять проблему в Google Issues Tracker для Androidapp:passwordToggleDrawable
(устарело), илиapp:endIconDrawable
затем использовать настраиваемое рисование, как<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_eye_close" android:state_checked="true"/> <item android:drawable="@drawable/ic_eye_open"/> </selector>
я думаю, Google должен исправить это поведение. Хорошая дискуссияЧтобы показать точки вместо пароля, установите PasswordTransformationMethod:
конечно, вы можете установить это по умолчанию в элементе edittext в макете XML с
Чтобы снова показать читаемый пароль, просто передайте null как метод преобразования:
источник
android:password
устарела, и вы должны использоватьandroid:inputType
вместо этого.editText.getSelectionStart()
иeditText.getSelectionEnd()
для сохранения положения курсора иeditText.setSelection(start, end)
для его восстановления.Показывать:
Прятаться:
После каждого из них курсор сбрасывается, поэтому:
источник
Ты можешь использовать
app:passwordToggleEnabled="true"
вот пример, приведенный ниже
источник
app:endIconMode="password_toggle"
.Используйте флажок и измените тип ввода соответственно.
источник
...
...
источник
Это работа для меня. Это поможет вам определенно
источник
Я чувствую, что хочу ответить на этот вопрос, даже если есть хорошие ответы,
согласно документации TransformationMethod выполнить нашу миссию
Заметьте, что я использую нож для масла, но то же самое, если пользователь проверяет показать пароль
источник
Я могу добавить код ShowPassword / HidePassword с помощью нескольких строк, содержащихся в блоке:
источник
У меня была такая же проблема, и ее очень легко реализовать.
Все, что вам нужно сделать, это обернуть поле EditText в (com.google.android.material.textfield.TextInputLayout) и в это добавление (app: passwordToggleEnabled = "true").
Это покажет глаз в поле EditText и при нажатии на него пароль появится и исчезнет при повторном нажатии.
источник
источник
В очень простой форме:
Надеюсь, поможет.
источник
Вы можете показать / скрыть пароль, используя следующий код:
XML-код:
КОД JAVA:
источник
Попробуй это:
Сначала определите флаг как глобальный:
И настройте слушателя на обработку нажатия на шоу и скрытия пароля:
источник
Попробуйте https://github.com/maksim88/PasswordEditText проект на github. Вам даже не нужно менять свой Java-код, используя его. Просто поменяй
Редактировать текст
тег к
com.maksim88.passwordedittext.PasswordEditText
в вашем XML-файле.
источник
показать и скрыть пароль Edit_Text с флажком
XML
код Java
источник
Вы пробовали с setTransformationMethod? Он унаследован от TextView и требует TransformationMethod в качестве параметра.
Вы можете найти больше о TransformationMethods здесь .
Он также имеет несколько интересных функций, таких как замена персонажа.
источник
То, что я сделал, было
Вы можете проверить это видео для более подробных шагов и объяснений https://youtu.be/md3eVaRzdIM
Надеюсь, поможет :)
источник
Вот мое решение без использования TextInputEditText и метода Transformation.
XML
Java-код
источник
Согласно этому источнику , если вы перенесли свой проект на AndroidX, вы можете заменить
compile "com.android.support:design:24.2.0"
с участием
implementation "com.google.android.material:material:1.0.0"
Тогда все, что вам нужно сделать, это поместить приведенный ниже код в файл макета:
Более подробную информацию о материале
TextInputLayout
можно найти здесь .К этому источнику рекомендуется перейти на AndroidX из библиотеки поддержки Android:
источник
Сначала это экран, загруженный видимостью векторного изображения.
при клике это изменит видимость этого изображения с
код для переключения пароля выше (код xml)
Java-код для работы с кнопками
источник
В XML делай так
источник
Мое расширение Kotlin. пиши один раз используй везде
Вы можете сохранить этот метод в любом файле и использовать его везде так, как это
где ivShowPassword нажата imageview (глаз) и etPassword является Editext
источник
Хорошее решение Установите кнопку, затем используйте этот код:
источник
Добавьте этот метод:
Вызов это переключит между состоянием типа ввода (вы можете изменить однострочное преобразование на ваше любимое). Пример использования:
источник
источник
источник
источник