¿Cómo puedo definir texto subrayado en un xml
archivo de diseño de Android ?
android
android-layout
fonts
Janusz
fuente
fuente
Respuestas:
Se puede lograr si está utilizando un archivo xml de recursos de cadena , que admite etiquetas HTML como
<b></b>
,<i></i>
y<u></u>
.Si desea subrayar algo del uso del código:
fuente
<u>
etiquetas no funciona, por ejemplo, a veces, si está utilizando una fuente personalizada. Sin embargo, subyacente programáticamenteUnderlineSpan
aún no me ha fallado, por lo que lo recomendaría como la solución más confiable.Puedes probar con
fuente
| Paint.ANTI_ALIAS_FLAG
o su texto se verá muy nítido. Esto se manifiesta en API más bajas la mayoría de las veces.textView.paintFlags = textView.paintFlags or Paint.UNDERLINE_TEXT_FLAG
La respuesta "aceptada" anterior NO funciona (cuando intenta utilizar la cadena como
textView.setText(Html.fromHtml(String.format(getString(...), ...)))
.Como se indica en la documentación , debe escapar del corchete de apertura (codificado con la entidad html) de las etiquetas internas con
<
, por ejemplo, el resultado debería verse así:Luego, en su código, puede configurar el texto con:
fuente
Contenido del archivo Strings.xml:
El archivo xml de diseño debe usar el recurso de cadena anterior con las siguientes propiedades de vista de texto, como se muestra a continuación:
fuente
Para Button y TextView, esta es la forma más fácil:
Botón:
Vista de texto:
fuente
Solución de una línea
myTextView.setText(Html.fromHtml("<p><u>I am Underlined text</u></p>"));
Es un poco tarde pero podría ser útil para alguien.
fuente
En Kotlin se puede utilizar la función de extensión . Esto solo se puede usar desde el código, no desde xml.
Uso:
fuente
echa un vistazo al estilo de botón clicable subrayado:
strings.xml:
Resultado:
fuente
El enfoque más reciente de dibujar texto subrayado es descrito por Romain Guy en medio con código fuente disponible en GitHub . Esta aplicación de muestra expone dos posibles implementaciones:
fuente
Sé que esta es una respuesta tardía, pero se me ocurrió una solución que funciona bastante bien ... Tomé la respuesta de Anthony Forloney por subrayar el texto en el código y creé una subclase de TextView que lo maneja por usted. Luego, puede usar la subclase en XML siempre que desee tener una TextView subrayada.
Aquí está la clase que creé:
Ahora ... cada vez que desee crear una vista de texto subrayada en XML, simplemente haga lo siguiente:
He agregado opciones adicionales en este fragmento de XML para mostrar que mi ejemplo funciona cambiando el color, el tamaño y el estilo del texto ...
¡Espero que esto ayude!
fuente
Una forma más limpia en lugar del
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
método es usartextView.getPaint().setUnderlineText(true);
Y si luego necesita desactivar el subrayado para esa vista, como en una vista reutilizada en un RecyclerView,
textView.getPaint().setUnderlineText(false);
fuente
Simplemente use el atributo en el archivo de recursos de cadena, por ejemplo
fuente
Usé este xml dibujable para crear un borde inferior y apliqué el dibujable como fondo a mi vista de texto
fuente
Una solución simple y flexible en xml:
fuente
otra solución es crear una vista personalizada que extienda TextView como se muestra a continuación
y solo agregue a xml como se muestra a continuación
fuente
Simplifiqué la respuesta de Samuel :
fuente
Creé este método para facilitar
Subrayar todo TextView
Subrayar alguna parte de TextView
revise mi respuesta aquí para hacer que el texto subrayado sea cliqueable o subrayar varias partes de TextView
fuente
prueba este código
en XML
en codigo
¡Buena suerte!
fuente
Además, el siguiente código no imprimirá el subrayado:
En su lugar, use el siguiente código para conservar el formato de texto enriquecido:
"Puede usar getString (int) o getText (int) para recuperar una cadena. GetText (int) conserva cualquier estilo de texto enriquecido aplicado a la cadena". Documentación de Android.
Consulte la documentación: https://developer.android.com/guide/topics/resources/string-resource.html
Espero que esto ayude.
fuente
La respuesta más votada es correcta y más simple. Sin embargo, a veces puede encontrar que no funciona para algunas fuentes, sino para otras (qué problema acabo de encontrar cuando trato con chino).
La solución es no utilizar "WRAP_CONTENT" solo para su TextView, porque no hay espacio adicional para dibujar la línea. Puede establecer una altura fija en su TextView, o usar android: paddingVertical con WRAP_CONTENT.
fuente
Tenga en cuenta el símbolo de escape en el archivo xml
fuente
Para hacer eso en Kotlin:
yourTextView.paint?.isUnderlineText = true
fuente
Es bastante tarde para responder esto, pero supongamos que si alguien quiere obtener el texto dinámicamente, puede usar esta línea simple en su código Java que funciona:
fuente
Tuve un problema en el que estaba usando una fuente personalizada y el subrayado creado con el truco del archivo de recursos (
<u>Underlined text</u>
) funcionó, pero Android logró transformar el subrayado en una especie de huelga.Utilicé esta respuesta para dibujar un borde debajo de la vista de texto: https://stackoverflow.com/a/10732993/664449 . Obviamente, esto no funciona para texto subrayado parcial o texto multilínea.
fuente