Подтвердить что ты не робот

Цифровое поле пароля для Android

У меня есть поле EditText, которое должно быть полем с числовым паролем. Все работает нормально в портретном режиме; не в ландшафте. Когда пользователь выбирает поле EditText, пользовательский интерфейс масштабируется в поле, и когда я печатаю все символы, они видны.

Мне также нужна цифровая клавиатура. Я попытался установить тип ввода в текстовый пароль | число. Если я удалю вариант "число", все будет работать правильно; в противном случае нет.

Любые предложения?

4b9b3361

Ответ 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", если вы хотите также поддерживать старые устройства.