Я реализовал Edittext, который принимает numberPassword , а также позволяет пользователю показывать пароль и скрывать пароль. Это работает, но есть одна проблема, которую я не могу решить.
Я использовал InputType.TYPE_CLASS_NUMBER and InputType.TYPE_NUMBER_VARIATION_PASSWORD
, чтобы скрыть работающий пароль, я использовал InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
, чтобы сделать его видимым.
Но тогда InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
также позволяет пользователю вводить как символы, так и цифры, но я этого не хочу. Я хочу, чтобы пользователи могли вводить цифры ТОЛЬКО.
Пожалуйста, как мне этого добиться?
это мой код ниже:
private fun setShowHiddenField(field: TextInputEditText, checked: Boolean){
if(checked){
field.inputType = InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
} else {
field.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD
}
field.setSelection(field.getText().toString().length)
}
Редактировать
Для тех, кто спрашивает, почему я не сделал этого в XML? Даже если вы делаете это в xml, использование InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
все равно вызовет клавиатуру, разрешающую как тексты, так и цифры.
У меня есть код для редактирования текста ниже:
<android.support.design.widget.TextInputEditText
android:id="@+id/cardNumberEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberPassword"
android:maxLines="1"
android:digits="1234567890"
tools:ignore="LabelFor,NegativeMargin"/>
Думайте об этом как о Edittext, принимающем PIN-код , который вы также хотите дать пользователям возможность просматривать PIN-код и скрывать его.
Я использую флажок, чтобы позволить пользователю выбрать, чтобы скрыть или показать. Поэтому я не могу использовать параметры пароля, такие как passwordToggleContentDescription
или passwordToggleEnabled
или passwordToggleTint