Редактировать текст, установленный для пароля с вводом номера телефона?(android)
-
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
может принимать несколько значений.