Редактировать текст, установленный для пароля с вводом номера телефона?(android)

StackOverflow https://stackoverflow.com/questions/2017674

  •  19-09-2019
  •  | 
  •  

Вопрос

Как мне получить Edittext как с телефонным вводом, так и с возможностью скрыть строку?Я знаю, что

android:inputType="textPassword"

скрывает строку, в то время как

android:inputType="phone"

открывает интерфейс панели набора номера.

Как совместить эти два аспекта?

Это было полезно?

Решение

android:password устарел, но AFAIK - это единственный способ, потому что android:inputType="phone|textPassword" игнорируется ...

<EditText
    android:id="@+id/EditText01"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:password="true"
    android:inputType="phone" />

Другие советы

Я верю, что это то, чего ты хочешь?

android:inputType="numberPassword"

Редактировать:На момент возникновения вопроса (2010) этого, возможно, не было в API, но для современной разработки это доступно.

Я не нашел подходящего решения этой проблемы.принятое решение dtmilano работает не полностью.Если редактируемый текст сфокусирован в альбомном режиме, где у вас есть полноэкранная клавиатура, цифры по-прежнему отображаются открытым текстом, а не замаскированы.

Я потратил значительное время на просмотр фактического кода TextView, и причина, по которой это проблема, заключается в том, что они явно проверяют inputType на соответствие inputType.TYPE_CLASS_TEXT и, если я правильно помню, TYPE_MASK_CLASS.Поэтому, если вы включите любой другой inputType в эти границы (я думаю, что диапазон, используемый TYPE_CLASS_TEXT и TYPE_MASK_CLASS, является первым байтом), то он не будет распознан как пароль, который нуждается в маскировке.

Я знаю, то, что я сказал, довольно сбивает с толку.Фактический код НАМНОГО более запутанный.Честно говоря, я был довольно шокирован кодом TextView.Это запутанный беспорядок, с жестко закодированными проверками повсюду.Ужасная практика кодирования, которая приводит к подобным проблемам.

Эта проблема может быть решена без использования устаревшего android:password.Смотрите мой ответ здесь.

Я не пробовал этого, но, возможно, можно было бы объединить эти два способа следующим образом:

android:inputType="textPassword|phone"

с тех пор как inputType может принимать несколько значений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top