Campo de contraseña numérica de Android
Tengo un campo EditText que necesita ser un campo numérico de la contraseña. Todo funciona bien en modo retrato; No en el paisaje. Cuando el usuario selecciona el campo EditText, la interfaz de usuario se amplía en el campo y cuando escribo todos los caracteres son visibles.
Necesito un teclado numérico también. Traté de configurar el tipo de entrada a la contraseña de texto. Si elimino la opción "número" todo funciona bien; De lo contrario no
- Etiqueta flotante con dos editText
- Make editText perder el foco en la parte posterior de la prensa
- Objetos EditText múltiples en AlertDialog
- Editar texto sin autocorrección
- Cómo hacer que EditText lea y copie solo pero no editable
¿Alguna sugerencia?
- Inactivo InputConnection advertencia en todo el cuadro EditText
- ¿Cómo comprobar símbolos en EditText en android?
- EditText setOnFocusChangeListener en todos los EditTexts
- Android AutoCompleteTextView con chips
- Haga un subrayado rojo ondulado para algunas palabras en edittext
- Quitar filtro de EditText en Android?
- TextInputLayout: RuntimeException - No se pudo resolver el atributo en el índice 24
- Android: Centrar el texto dentro de EditText programáticamente
Este problema puede resolverse sin utilizar la android:password
obsoleta de android:password
Utilice el siguiente fragmento de código, pero no invierta la secuencia de llamadas:
EditText editText = (EditText) findViewById(R.id.MyEditText); editText.setInputType(InputType.TYPE_CLASS_NUMBER); editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
La solución más simple que encontré para una entrada numérica de texto que necesitaba ser ocultada (estilo de contraseña) era usar: android:inputType="numberPassword"
Ejemplo completo que funcionó para mí:
<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"/>
Para solucionar el problema en el que la contraseña está visible en el editor de pantalla completa en modo de paisaje (como lo describió Marcus), puede agregar la siguiente línea para deshabilitar el editor de pantalla completa:
editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
También puede cambiar el tipo de letra a monospace para emular mejor el comportamiento de contraseña de texto:
editText.setTypeface(Typeface.MONOSPACE);
Uso de la
android:password="true"
Puede resolver su problema.
Pruebe esto en XML y nada cambia en el archivo de manifiesto,
<EditText android:id="@+id/etPassword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPassword" android:singleLine="true" />
Esto cómo hacer la contraseña de entrada que tiene una pista que no se convierta a * !!.
En XML:
android:inputType="textPassword" android:gravity="center" android:ellipsize="start" android:hint="Input Password !."
Gracias a: mango y rjrjr por la perspicacia: D.
Creo que deberías usar android:password="true"
y android:numeric="integer"
. Sin embargo, como afirma la documentación de Android (en R.attr.html
, no en los documentos de TextView
), éstos se deprecian y se debe utilizar android:inputType
. InputType lleva bandera, por lo que puede mezclar múltiples posibilidades. Y creo que android:inputType="number | password"
debería funcionar para usted.
Debe especificar android:password="true"
si también desea soportar dispositivos antiguos.