Agregar un prefijo a un EditText

¡Agregar un prefijo siempre visible a un EditText es sorprendentemente difícil! Los usuarios pueden eliminar su prefijo, escribir o pegar texto en el medio. Manejar esto en un TextWatcher requiere mucho código. Sin embargo, ¡hay una manera más fácil!

Usar un TextWatcher para agregar un prefijo siempre visible es bastante complicado, si alguien hace clic en el medio de su prefijo, debe interceptar el texto y moverlo al final o más el cursor al final inmediatamente. Todo esto puede resultar en MUCHO código. Debe deshabilitar copiar / pegar, debe manejar onClick, debe manejar el cambio de texto, etc.

Otro enfoque puede ser poner a TextView en el fondo y agregar relleno al EditText, sin embargo, es complicado alinear el texto de fondo y el EditText. La razón de esto es que el relleno está en DIP y los tamaños de texto están en SP. Si logra que las cosas se alineen perfectamente, la fragmentación de la vista EditText, los cambios de accesibilidad y las diferentes densidades de dispositivos pueden hacer que el texto se muestre sin alinear. Consulte los problemas de compatibilidad aquí para obtener más información sobre la fragmentación de EditText.

La mejor manera que se me ocurre para abordar este problema es crear un EditText personalizado que use literalmente el mismo objeto de pintura para dibujar el texto del prefijo y agregar relleno de acuerdo con el tamaño del texto del prefijo. A continuación se muestra un código rápido y sucio para hacer lo mismo. El siguiente ejemplo prefijo el EditText con un código de país para ingresar números de teléfono (por ejemplo).

<”Notas:

El resultado

El código

Uso:

Otro enfoque

Otro enfoque y, en algunos aspectos, un mejor enfoque puede ser crear un elemento de diseño personalizado y agregarlo como elemento de dibujo a la derecha o izquierda. El elemento de diseño personalizado simplemente dibujará el texto. La razón por la que no elegí este enfoque es:

ACTUALIZACIÓN 7 de marzo de 2016: Creé un TextDrawable que puedes usar para agregar un prefijo a un EditText o usar emojis, caracteres Unicode o texto como Drawable.

Finalmente

Para crear excelentes aplicaciones de Android, lea más de mis artículos.

¡Bien! ¡llegaste hasta el final! ¡Deberiamos salir juntos! no dudes en seguirme en Medium, LinkedIn, Google+ o Twitter.