2011-02-18 8 views
5

¿Hay alguna forma de agregar un String a un valor EditText, para que la cadena anexada no sea editable?Añadir cadenas no editables a EditText

i.e. Digamos que tengo un EditText para direcciones de correo electrónico, quiero tratar una dirección de correo electrónico como una entidad única en lugar de caracteres individuales. Por lo tanto, si un usuario elimina el último carácter de la dirección de correo electrónico, quiero que se elimine toda la dirección de correo electrónico en lugar del último carácter.

He estado buscando en Spannable pero no puedo ver nada obvio. Esto es similar a cómo lo hacen Gmail y otras aplicaciones.

+3

Tal vez puedas tener un oyente de texto modificado y luego modificar manualmente el contenido de EditText, luego reemplazarlo con lo que quieras. Si el usuario ingresó [email protected], cuando la longitud disminuya en 1, configure el texto en una cadena vacía. Sin embargo, no sé si eso es lo que quieres. :) – Zarah

+0

@Zarah: Buena respuesta (lo voté arriba :-). Tal vez deberías haberlo puesto como una "Respuesta" en lugar de un "Comentario". Tal como está ahora, no parece haber una manera para que Chris Banes acepte su solución como "La respuesta" (siempre que lo desee, por supuesto). – dbm

+0

@dbm ¡Oye, gracias! :) No estaba seguro de si eso era lo que quería Chris Banes. Parece que muchas personas estuvieron de acuerdo conmigo, por lo que volver a publicarlo como una respuesta. :) – Zarah

Respuesta

4

Reposicionando mi comentario como respuesta (y modificando las palabras para hacer mi sugerencia más clara).

Tener una [onTextChanged] (http://developer.android.com/reference/android/widget/TextView.html#onTextChanged(java.lang.CharSequence, int, int, int)) conectado a su EditText para ser notificado de la entrada del usuario. Luego puede verificar la longitud de los contenidos del EditText, y si disminuye en 1, entonces puede suponer que el usuario borró un carácter.

Si el usuario ingresó [email protected] entonces en su onTextChanged, puede establecer el texto en una cadena vacía. Por supuesto, debería verificar primero para asegurarse de que el usuario ingresó una dirección de correo electrónico completa antes de aplicar el cambio. Por ejemplo, tal vez asegúrese de que el usuario ya haya ingresado el carácter @ o que haya espacio después del último carácter que no sea espacio.