2010-01-07 12 views

Respuesta

33

android:password es obsoleto, pero que yo sepa es la única manera, porque se ignora 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" /> 
+0

Ah, interesante. No había visto que está en desuso. Aquí está la documentación que menciona 'inputType' es el camino a seguir (como menciona Roman): http://developer.android.com/reference/android/R.attr.html#password –

+1

Como una pequeña adición, para aquellos que quieran para hacer las cosas desde el código: editText.setInputType (InputType.TYPE_CLASS_PHONE); editText.setTransformationMethod (PasswordTransformationMethod.getInstance()); –

+2

inputType = "numberPassword" es posiblemente la mejor opción, pero solo está disponible si el SDK mínimo de su aplicación es> = 3.0 (Honeycomb) – k2col

0

No he probado esto, pero podría ser posible combinar los dos, así:

android:inputType="textPassword|phone" 

desde inputType puede asumir varios valores.

+0

No funciona. EditText está ignorando textPassword y simplemente estableciendo en el teléfono – Portablejim

+1

Lo siento, mi respuesta fue solo una suposición educada sin probar ... El fragmento de dtmilano parece ser el camino correcto. –

1

Este problema puede resolverse sin necesidad de utilizar obsoleta android:password. Ver mi respuesta here.

+0

¿Cómo cree que funciona android: password? ;) Sí, es un atributo XML en desuso, pero ¿qué código se ejecuta en tiempo de ejecución cuando se presenta el atributo? –

2

No he encontrado una solución adecuada a este problema. La solución aceptada de dtmilano no funciona del todo. Si EditText se enfoca en modo horizontal donde tiene el teclado de pantalla completa, los números aún se muestran en texto claro, sin enmascarar.

Pasé un tiempo considerable revisando el código de TextView, y la razón por la que esto es un problema es que están comprobando explícitamente InputType contra InputType.TYPE_CLASS_TEXT y, si recuerdo correctamente, TYPE_MASK_CLASS. Entonces, si incluye cualquier otro InputType dentro de esos límites (creo que el rango utilizado por TYPE_CLASS_TEXT y TYPE_MASK_CLASS es el primer byte), entonces no se reconocerá como una contraseña que necesita enmascaramiento.

Sé que lo que dije es bastante confuso. El código real es MUCHO más confuso. Estaba bastante consternado con el código de TextView para ser honesto. Es un desastre enredado, con duros controles codificados en todas partes. Horrible práctica de codificación que conduce a problemas como este.

5

Creo que esto es lo que quieres?

android:inputType="numberPassword" 

Editar: En el momento de la pregunta (2010) esto puede no haber estado en la API, sino para el desarrollo contemporáneo, que está disponible.

Cuestiones relacionadas