Цифровое поле пароля для Android
У меня есть поле EditText, которое должно быть полем с числовым паролем. Все работает нормально в портретном режиме; не в ландшафте. Когда пользователь выбирает поле EditText, пользовательский интерфейс масштабируется в поле, и когда я печатаю все символы, они видны.
Мне также нужна цифровая клавиатура. Я попытался установить тип ввода в текстовый пароль | число.
Если я удалю вариант "число", все будет работать правильно; в противном случае нет.
Любые предложения?
Ответы
Ответ 1
Эта проблема может быть решена без использования устаревшего android:password
. Используйте следующий фрагмент кода, но не изменяйте последовательность вызовов:
EditText editText = (EditText) findViewById(R.id.MyEditText);
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
Ответ 2
Самое простое решение, которое я нашел для ввода числового текста, которое нужно было скрывать (стиль пароля), заключалось в использовании: android:inputType="numberPassword"
Полный пример, который работал у меня:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/MyLargeTextBox"
android:background="@android:drawable/editbox_background_normal"
android:id="@+id/txtWebServicePIN"
android:layout_row="3"
android:layout_column="2"
android:layout_columnSpan="2"
android:minWidth="100dp"
android:maxWidth="100dp"
android:inputType="numberPassword"
android:maxLength="6"/>
Ответ 3
Чтобы устранить проблему, когда пароль отображается в полноэкранном редакторе ландшафтного режима (как описано Маркусом), вы можете добавить следующую строку, чтобы отключить полноэкранный редактор:
editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
Вы также можете изменить шрифт на моноширину, чтобы лучше эмулировать поведение текстового пароля:
editText.setTypeface(Typeface.MONOSPACE);
Ответ 4
Использование устаревшего
android:password="true"
может решить вашу проблему.
Ответ 5
Попробуйте это в XML и ничего не измените в файле манифеста,
<EditText
android:id="@+id/etPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:singleLine="true" />
Ответ 6
Это как сделать пароль ввода с подсказкой, которая не была преобразована в *!!.
В XML:
android:inputType="textPassword"
android:gravity="center"
android:ellipsize="start"
android:hint="Input Password !."
благодаря: mango и rjrjr для понимания: D.
Ответ 7
Я думаю, вы должны использовать android:password="true"
и android:numeric="integer"
. Но, как заявляет документация на Android (в R.attr.html
, а не в документах TextView
), они исправлены, и вы должны использовать android:inputType
. inputType принимает флаг, поэтому вы можете смешивать возможности mulitple. И я думаю, что android:inputType="number | password"
должен работать на вас.
Вы должны указать android:password="true"
, если вы хотите также поддерживать старые устройства.