Поле числового пароля Android - PullRequest
36 голосов
/ 10 марта 2010

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

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

Есть предложения?

Ответы [ 8 ]

61 голосов
/ 25 октября 2010

Эта проблема может быть решена без использования устаревших android:password. Используйте следующий фрагмент кода, но не меняйте последовательность вызовов:

    EditText editText = (EditText) findViewById(R.id.MyEditText);
    editText.setInputType(InputType.TYPE_CLASS_NUMBER);
    editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
16 голосов
/ 02 января 2014

Самое простое решение, которое я нашел для числовой текстовой записи, которую нужно было скрыть (стиль пароля), было использовать: 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"/>
6 голосов
/ 02 ноября 2011

Чтобы устранить проблему, когда пароль отображается в полноэкранном редакторе в ландшафтном режиме (как описал Маркус), вы можете добавить следующую строку, чтобы отключить полноэкранный редактор:

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

Возможно, вы также захотите изменить гарнитуру на моноширинную для лучшей эмуляции поведения текстового пароля:

editText.setTypeface(Typeface.MONOSPACE);
3 голосов
/ 11 марта 2010

Использование устаревших

android:password="true"

может решить вашу проблему.

1 голос
/ 03 апреля 2013

Попробуйте это в XML и ничего не изменится в файле манифеста,

<EditText
         android:id="@+id/etPassword"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:inputType="textPassword"
         android:singleLine="true" />
0 голосов
/ 23 июня 2018

Попробуйте с этим:

EditText input = (EditText) findViewById(R.id.input);
input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

Подробнее ЗДЕСЬ

0 голосов
/ 11 октября 2013

Это как сделать ввод пароля с подсказкой, которая не конвертируется в * !!.

В XML:

android:inputType="textPassword"
android:gravity="center"
android:ellipsize="start"
android:hint="Input Password !."

спасибо: манго и rjrjr за понимание: D.

0 голосов
/ 19 марта 2010

Я думаю, вы должны использовать android:password="true" и android:numeric="integer". Но, как говорится в документации Android (в R.attr.html, а не в TextView документах), они устарели, и вам следует использовать android:inputType. inputType принимает флаг, так что вы можете смешивать несколько возможностей. И я думаю, android:inputType="number | password" должно работать на вас.

Вам следует указать android:password="true", если вы хотите также поддерживать старые устройства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...