¿Cómo puedo ocultar la barra inferior de EditText (la línea de solicitud con pequeñas serif en los extremos)?
Puede haber una mejor manera de hacer lo que quiero: tengo un diseño con EditText. Normalmente, esto se muestra bien donde el usuario puede tocarlo y comenzar a ingresar o editar texto.
A veces, sin embargo, me gustaría usar el mismo diseño (simplifica otra lógica) para mostrar los mismos datos de una manera de solo lectura. Quiero que la presentación sea similar: debe tener la misma altura y la misma fuente, pero no la barra inferior.
Como medida provisional, voy a implementar esto eliminando el EditText y sustituyendo un TextView. Creo que eso dará los resultados deseados, pero parece una rotonda una forma costosa de hacer algo que debería ser fácil cambiando los atributos.
fuente
Respuestas:
Puede configurar el
EditText
para tener un dibujo transparente transparente personalizado o simplemente usaro
o programáticamente
fuente
android:background="@android:color/transparent"
android:background="@android:color/transparent"
causa el mismo problema de pérdida de márgenes ... ¿Hay algún ejemplo de alguien creando un dibujo tan personalizado?Establecer fondo a nulo.
fuente
android:background="@android:color/transparent
porque@null
da miedo.@null
miedo?Puede establecer
EditText
elbackgroundTint
valor de un color específico. Si establece un color transparente, la barra inferior debería desaparecer.android:backgroundTint="@color/Transparent"
<color name="Transparent">#00000000</color>
Pero puedes usar esto en
Api v21(Lollipop)
o más altofuente
Establezca su fondo de edición de texto como
android:background="#00000000"
Funcionará.
fuente
Puede hacerlo mediante programación usando
setBackgroundResource
:fuente
Lo que hice fue crear una forma dibujable y establecerla como fondo:
Nota: Realmente utilicé
@dimen
y@color
valores para firelds, pero he simplificado el archivo de forma aquí para mayor claridad.fuente
Usando cualquiera de las propiedades:
O
funcionó para mí ocultar el subrayado de EditText.
Sin embargo, tenga en cuenta que luego causa un problema de espacio con el TextInputLayout que he rodeado el
EditText
fuente
Aquí hay una manera de ocultarlo, sin arruinar el relleno predeterminado:
uso:
Actualizar:
Si se encuentra siempre pasando nulo, puede codificar eso en el método (y luego también podría sobrecargar EditText)
fuente
También debe establecer un minWidth, de lo contrario el cursor desaparecerá si el texto está vacío.
fuente
En mi caso, estaba usando un fondo personalizado para editar texto, por lo que establecer el fondo en @null o establecer el tinte en transparente no era la solución para mí, así que jugué un pequeño truco que funcionó muy bien para mí.
y hace el trabajo bastante bien ... no es la solución óptima pero funciona
fuente
Tengo algo como esto que es muy muy útil:
donde generalEditText es mi EditText y el color blanco es:
Esto no eliminará el relleno y su EditText permanecerá como está. Solo se eliminará la línea en la parte inferior. A veces es más útil hacerlo así.
Si usa
android:background="@null"
tantas sugerencias, pierde el relleno y EditText se vuelve más pequeño. Al menos, fue mi caso.Una pequeña nota al margen es que si establece un fondo nulo y prueba el código de Java que proporcioné anteriormente, su aplicación se bloqueará justo después de ejecutarla. (porque obtiene el fondo pero es nulo). Puede ser obvio, pero creo que señalarlo es importante.
fuente
¡Descubrí lo más curioso! Si lo configura para
null
usar Enlace de datos:android:background="@{null}"
Entonces no solo se elimina el fondo, sino que la vista todavía tiene el relleno que se calculó a partir del fondo predeterminado. Entonces, por alguna razón, la configuración nula diferida no borra el relleno del bg anterior ...? El relleno en la vista es 4dp izquierda / superior / derecha, 13dp inferior (desde el nivel 21 del emulador).
Es posible que no tenga el mismo resultado final en todos los niveles de API, ¡así que tenga cuidado! Alguien dígame si prueba esto y lo encuentra confiable. (También tenga en cuenta que ese relleno inferior sobresale debido a ese subrayado que estaba en el original. Por lo tanto, es probable que desee cambiarlo en el XML o restablecerlo en el código después de que se cargue en la parte superior igual ...
fuente
si su texto de edición ya tiene un fondo, puede usar lo siguiente.
fuente
Si desea que esto afecte a todas las instancias de EditText y cualquier clase que herede de él, entonces debe establecer en su tema el valor para el atributo, editTextBackground.
Un ejemplo del dibujo que uso es:
Esta es una versión ligeramente modificada de cuál es la implementación de diseño de material predeterminada.
Cuando se aplica, hará que todo su EditText elimine el subrayado en toda la aplicación, y no tiene que aplicar el estilo a todos y cada uno manualmente.
fuente
Simplemente use esto
fuente
También puede definir un ESTILO para su editText para que pueda reagrupar todas las propiedades en común. Es muy poderoso si tiene que editar múltiples textos que necesitan tener el comportamiento
Ponga el código en res / values / styles.xml
Después de eso solo necesita llamarlo en su editText
fuente
Uso programático:
editText.setBackground(null)
De
xml
uso:android:background="@null"
fuente
O
fuente
android: inputType = "textVisiblePassword | textMultiLine" android: background = "@ android: color / transparent"
... no es la solución óptima pero funciona.
fuente
Establecer fondo como nulo
fuente
En mi caso,
editText.setBackgroundResource(R.color.transparent);
es lo mejor.No elimina el relleno predeterminado, justo debajo de la barra.
R.color.transparent = #00000000
fuente
si está utilizando el fondo, debe usar esta etiqueta
fuente
Para conservar los márgenes y el color de fondo, use:
background.xml
Editar texto:
fuente