Password Visibility Toggle — Android Support Library, revision 24.2.0
Здравствуйте! Предлагаю вниманию читателей перевод статьи об обновлении Android Support Library и одном немаловажном ее новом компоненте Password Visibility Toggle . Оригинал статьи можно найти здесь.
Считаю, что Password Visibility Toggle довольно интересный инструмент, причем довольно простой, который заслуживает отдельного внимания, поэтому прошу под кат.
От себя хочу добавить, что текущее обновление Support Library считается одним из самых масштабных: разделение на несколько маленьких модулей — несомненный плюс, который поможет уменьшить вес вашего .apk файла; большое обновление API; куча deprecations ну и немножко bugfixes нам принесли.
Android Support Library была недавно обновлена с весьма интересными изменениями. Я обратила внимание на Password Visibility Toggle не случайно: буквально несколько дней назад я пыталась реализовать этот функционал в своём рабочем проекте без использования каких-либо библиотек (между прочиим, Lisa Wray разработала прекрасную либу).
Я восхваляла это в твиттере.
Естественно, это было одной из первый вещей, которую я использовала, поскольку мне нужно было немедленно обновить свой проект.
Здесь очень базовый туториал как с этим работать.
Первый шаг
Первый и самый очевидный — это, конечно же, обновить версию Support Library до 24.2.0. Надеюсь, у тебя версии зависимостей прописаны в extra properties. Если да, то это означает, что тебе нужно поменять версию лишь в ОДНОМ месте. Если нет, то тебе прийдется изменять Gradle файл столько раз, сколько версия встречается.
Далее
Следующим шагом будет создание TextInputEditText и задание inputType одним из следующих вариантов: textPassword, numberPassword, textVisiblePassword либо textWebPassword. Я пробовала все 4 типа и заметила, что иконка видимости появляется на всех кроме textVisiblePassword варианта, что довольно очевидно, поскольку эта опция изначально задает видимость пароля по умолчанию.
Этот же код на gist.github автора.
Есть 5 XML аттрибутов связанных с password visibility toggle.
- passwordToggleContentDescription позволяет нам установить строку в качестве content description
- passwordToggleDrawable позволяет нам установить другую иконку, кроме значка видимости visibility toggle icon
- passwordToggleEnabled позволяет нам определить хотим ли мы что бы пароль был переключаемый. Мне кажется, что это должно быть установлено только если ты специально не хочешь сделать поле переключаемым
- passwordToggleTint позволяет нам окрасить значок в какой-либо цвет. Так же работает с custom drawable
- passwordToggleTintMode позволяет нам задать так называемый режим смешивания, в котором мы можем применить оттенок для фона.
Как обыкновенный Android UI компонент в XML, так же возможно реализовать это (passwordToggleContentDescription, passwordToggleDrawable, passwordToggleEnabled, passwordToggleTint and passwordToggleTintMode) непосредственно кодом: необходимо создать TextInputEditText и вызвать один из этих методов.
Замечания
После того, как я это заимплементила, я ожидала, что иконка видимости будет по умолчанию перечёркнута(ссылка на мой твит выше). Твит ниже от Nick Butcher и даже либа от Lisa Wray демонстрирует тоже самое. Я была несколько разочарована попробовав ее и обнаружив, что по-умолчанию изменение состояния видимости значка было лишь его незначительное затемнение вместо зачеркивания. Это не достаточно очевидно, по-моему мнению, так как это могло привести к заблуждению, особенно таких пользователей как я, который уже пробовали эту фичу на других платформах и ожидали такого же поведения. Мне необходимо было создать кастомный StateListDrawable и задать в passwordToggleDrawable XML аттрибуте тип эффекта, которого я хочу достигнуть.
Твит о Password Visibility Toggle от Nick Butcher.
Некоторые слова специально не переводил, так как считаю, что они могут исказить восприятие разработчика. Большинство слов уже считается нормой в нашей работе.
Если есть предложения по улучшению качества перевода либо что-то звучит просто несуразно — критика приветствуется.
Источник
Как скрыть и показать пароль на нажатие кнопки в Android?
При нажатии кнопки хотите видеть пароль, иначе он должен быть скрыт или, скажем, пунктирный. Я применил следующий код, но он не работает. Любая помощь будет оценена.
6 ответов
Вы использовали OnTouchListener , который дает вам MotionEvent . Используй их! Нет необходимости проверять, что кнопка нажата снова, пока вы нажимаете ее MotionEvent .
Чтобы увидеть поле пароля с паролем: inputType = TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
Когда кнопка нажата MotionEvent.ACTION_UP , чтобы вы могли видеть текст. Когда MotionEvent.ACTION_DOWN сохраните это как было в начале.
Вы не должны изобретать велосипед. Используй это:
Атрибут app:passwordToggleEnabled показывает / скрывает нужную кнопку. Обратите внимание, что вы также должны добавить эту строку в build.gradle вашего приложения:
Улучшенный вид ввода пароля: переключение видимости пароля. Привет! Я решил продолжить вести блог с некоторой задержкой, чтобы рассказать больше о разработке Android. Сегодня давайте начнем с простого: поля ввода пароля.
Улучшенный ввод пароля. Обычно формы входа или регистрации в пользовательском интерфейсе имеют поле для ввода пароля. А Android SDK предоставляет простой способ иметь поле ввода со скрытыми символами: EditText с inputType=»textPassword» . Очень просто. Однако, если вам нужно ввести какой-нибудь длинный и сложный пароль, это может быть немного утомительно: набрать тип довольно просто, а затем вам нужно снова начать вводить пароль.
Решение. Таким образом, чтобы упростить ввод пароля, мы можем реализовать простое, но очень эффективное решение: показывать значок справа от поля ввода, когда вы нажимаете на значок — введенный пароль становится видимым, когда вы поднимаете палец вверх — он снова показывает только неясные персонажи. Просто, эффективно и безопасно!
Существует по крайней мере три очевидных возможных способа добиться этого: скомпоновать представления Android SDK по умолчанию в макете и поместить логику поведения в родительский Fragment / Activity, создать составную ViewGroup для инкапсуляции макета, а логику поведения — создать подкласс EditText, который будет управлять настраиваемым рисованием в правая сторона зрения
Все эти три способа будут работать на вас. Первоначально я сделал первый способ по нескольким причинам, таким как: я не люблю создавать дополнительные сущности без реальной необходимости в этом. Что-то вроде принципа бритвы Оккама. 🙂 мне нужно иметь его только в одном месте
Конечно, если вам нужно иметь несколько одинаковых расширенных представлений пароля в разных местах, выберите 2-й или 3-й (желательно, потому что иерархия представлений плоская).
Реализация. Таким образом, простейшая реализация расширенного представления пароля с представлениями Android SDK по умолчанию может выглядеть так:
В макете знака XML (тривиальные и не относящиеся к теме параметры, такие как отступы, опущены):
В родительском фрагменте / активности:
2.1 . Для хорошего UX давайте добавим прослушиватель с измененным текстом, чтобы показать видимость пароля, если есть какое-то введенное значение пароля, и скрыть его для просмотра пустого пароля:
2.2 . Установите сенсорный слушатель для просмотра видимости пароля, чтобы реагировать на прикосновения
Слушатель касания применяет режим видимых символов, если палец находится внутри видимости, и применяет режим оригинального пароля обратно, когда палец вверх или покидает видимость. Также мы позаботимся о сохранении позиции курсора, чтобы пользователь мог переключать режим видимости в любое время без потери текущей позиции курсора ввода.
Это оно! Как я уже сказал, его очень просто реализовать, но он значительно улучшает UX!
Источник
Как переключаться между скрытым и отображаемым паролем
Есть ли умный способ позволить пользователю переключаться между скрыть и просматривать пароль в android EditText? Множество приложений на базе ПК позволяют пользователю делать это.
Вы можете динамически изменять атрибуты TextView. Если вы установите для параметра XML Atrribute android:password значение true, в представлении будут отображаться точки, если вы установите значение false, чтобы текст отображался.
С помощью метода setTransformationMethod вы сможете изменить эти атрибуты из кода. (Отказ от ответственности: я не тестировал, работает ли метод по-прежнему после отображения представления. Если у вас возникли проблемы с этим, оставьте мне комментарий для меня, чтобы он знал.)
Полный образец кода будет
Чтобы скрыть пароль. Чтобы показать пароль, вы можете установить один из существующих методов трансформации или реализовать пустой TransformationMethod , который ничего не делает с текстом ввода.
Это очень легко добиться, поскольку Библиотека поддержки v24.2.0.
То, что вам нужно сделать, это просто:
Добавьте библиотеку дизайна в свои зависимости
Использовать TextInputEditText в сочетании с TextInputLayout
Атрибут passwordToggleEnabled выполнит задание!
В корневом макете не забудьте добавить xmlns:app=»http://schemas.android.com/apk/res-auto»
Вы можете настроить свой пароль, используя:
app:passwordToggleDrawable – Возможность использования в качестве значка переключения ввода пароля.
app:passwordToggleTint – значок, используемый для переключения видимости ввода пароля.
app:passwordToggleTintMode – Режим наложения, используемый для применения фонового оттенка.
Подробнее в документации TextInputLayout .
Чтобы показать точки, а не пароль, установите PasswordTransformationMethod:
Конечно, вы можете установить это по умолчанию в элементе edittext в макете xml с помощью
Чтобы повторно просмотреть читаемый пароль, просто передайте null как метод преобразования:
После каждого из них курсор сбрасывается, поэтому:
Установите флажок и соответствующим образом измените тип ввода.
Я чувствую, что хочу ответить на этот вопрос, даже там хорошие ответы,
Согласно документации TransformationMethod, выполняем нашу миссию
TextView использует TransformationMethods для выполнения таких действий, как замена символов паролей точками или сохранение символов новой строки в результате разрывов строк в однострочных текстовых полях.
Заметьте, я использую масляный нож, но его то же самое, если пользователь проверить пароль
Я могу добавить код ShowPassword / HidePassword всего несколькими строками, автономными в блоке:
Вы можете использовать SHOW / HIDE пароль, используя следующий код:
XML-код:
КОД JAVA:
Вы можете использовать приложение: passwordToggleEnabled = «true»
Здесь приведен пример ниже
Вы пытались использовать setTransformationMethod? Он унаследован от TextView и хочет, чтобы в качестве параметра был параметр TransformationMethod.
Здесь вы можете найти больше о TransformationMethods.
Он также имеет некоторые интересные функции, такие как замена символов.
Попробуйте https://github.com/maksim88/PasswordEditText проект в github. Вам даже не нужно менять код Java, используя его. Просто измените
В вашем XML-файле.
Это работа для меня. Это поможет вам определенно
То, что я сделал, было
- Создание текстового вида редактирования и обычного текстового вида
- Сделайте их совпадающими друг с другом с помощью макета ограничения (так же, как экран входа в Facebook)
- Прикрепите onClickListener к нормальному текстовому виду, чтобы он соответствующим образом изменил тип ввода текста редактирования (видимый / невидимый)
Вы можете проверить это видео для более подробных шагов и объяснений https://youtu.be/md3eVaRzdIM
Вот мое решение без использования метода TextInputEditText и Transformation.
Источник
Android: Как установить свойство пароля в редактируемом тексте?
Мне нужно создать форму входа с полями «имя пользователя «»пароль» и двумя кнопками «вход» и «отмена» в моем приложении для android.
Я использую диалог предупреждения с edittext внутри этого.
Это код, который я использовал для создания пароля edittext..
моя проблема в том, что простой текст отображается вместо «точек», когда я открываю softkeypad для редактирования пароля. (Он отображается в виде точек, когда не в режиме softkeypad)
может кто-нибудь предложить решение?
9 ответов
это работает для меня.
Но вы должны смотреть на комментарий Октавиан Damiean, он прав.
в xml EditText iclude этот атрибут:android: пароль=»true»
редактировать
вот новый способ ввода точек в пароль
добавить андроид:помощью свойства inputType = «textPassword»
вам нужно использовать PasswordTransformationMethod.getInstance() вместо new PasswordTransformationMethod() .
единственный способ, который работал для меня с помощью кода (не XML), это:
это относится к EditText также, как это известный прямой подкласс TextView .
Я нашел при этом, что для того, чтобы установить гравитацию в центр, и все еще есть подсказка пароля показать, когда using inputType на android:gravity=»Center» должно быть в конце строки XML.
мой поиск аналогичного решения для Visual Studio 2015 / Xamarin приведет меня к этому потоку. При установке EditText.InputType до Android.Text.InputTypes.TextVariationVisiblePassword правильно скрыл пароль во время входа пользователя, он не «скрывал» пароль, если он был виден до отображения макета EditText (до того, как пользователь отправил свой пароль). Чтобы скрыть видимый пароль после отправки пользователем своего пароля и отображения макета EditText, я использовал EditText.TransformationMethod = PasswordTransformationMethod.Instance как предложено LuxuryMode.
чтобы установить пароль включен в EditText, мы должны установить атрибут «inputType» в xml-файле.Если мы используем только EditText, мы установим тип ввода в EditText, как указано ниже кода.
атрибут включения пароля —
но если мы реализуем пароль EditText с Material Design (с библиотекой поддержки дизайна), то мы будем писать код, как указано ниже.
@Примечание: — В Android SDK 24 и выше, «passwordToggleEnabled» по умолчанию имеет значение true. Поэтому, если у нас есть таможенная обработка функции show/hide в пароле EditText, нам придется установить его false в коде, как указано выше .
чтобы добавить строку выше, нам нужно будет добавить строку ниже в корневой макет.
Источник