Me alegra escuchar eso ... Marque esta pregunta como resuelta para que otros usuarios puedan referirla.
Kartik Domadiya
4
Un tercer enfoque sería el uso Html.fromHtml("<u>This text will be underlined</u>"), pero debo admitir que soy un fan mucho más grande del uso de SpannableStrings. @Kartik: También puede usar un StrikethroughSpanen el texto para crear el efecto de tachado. :)
MH.
Me encanta el tercer enfoque. Corto, simple y conciso y agrega solo una línea adicional de código a mi programa.
Matt
Sé que esto es un poco antiguo, pero ¿hay alguna manera de establecer el grosor del subrayado?
Andreas Wong
¿Cuál de los que se utiliza para el contenido de la actividad de preferencia, en la categoría de preferencia?
desarrollador de Android
40
simplemente rodee su texto con la etiqueta <u> en su archivo de recursos string.xml
@CHAKRAVARTHI no funcionará si lanza el texto a una cadena antes de configurarlo. Por ejemplo textView.setText(getString(R.string.text))<- incorrecto . Correcto:textView.setText(getText(R.string.text)) o simplemente textView.setText(R.string.text). La razón detrás de esto es que getText()regresa Spannablecon tramos subrayados, pero si lo usa getString(), convertirá el Spannableen Stringtramos resultantes que se eliminarán.
Yaroslav Mytkalyk
¡buen punto! Edité mi respuesta actual para ser más clara
Si su TextView tiene un ancho fijo, la solución alternativa puede ser crear una Vista que se verá como un subrayado y colocarla justo debajo de su TextView.
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
Pero Html.fromHtml (recurso String) quedó obsoleto en API 24.
Para que pueda usar la última biblioteca de soporte de Android androidx.core.text.HtmlCompat . Antes de eso, debe incluir la dependencia en su proyecto.
`implementation 'androidx.core:core:1.0.1'`
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>";
//underline textview using HtmlCompat.fromHtml() method
textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
Usando strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
Respuestas:
Hay tres formas de subrayar el texto en TextView.
SpannableString
setPaintFlags (); de TextView
Html.fromHtml ();
Déjame explicarte todos los enfoques:
1er Enfoque
Para subrayar el texto en TextView, debe usar SpannableString
2do enfoque
Puede hacer uso del método setPaintFlags de TextView para subrayar el texto de TextView.
Por ej.
Puede consultar las constantes de la clase Paint si desea tachar el texto.
3er Enfoque
Hacer uso de
Html.fromHtml(htmlString);
O
fuente
Html.fromHtml("<u>This text will be underlined</u>")
, pero debo admitir que soy un fan mucho más grande del uso de SpannableStrings. @Kartik: También puede usar unStrikethroughSpan
en el texto para crear el efecto de tachado. :)simplemente rodee su texto con la etiqueta <u> en su archivo de recursos string.xml
y en tu Actividad / Fragmento
fuente
textView.setText(getString(R.string.text))
<- incorrecto . Correcto:textView.setText(getText(R.string.text))
o simplementetextView.setText(R.string.text)
. La razón detrás de esto es quegetText()
regresaSpannable
con tramos subrayados, pero si lo usagetString()
, convertirá elSpannable
enString
tramos resultantes que se eliminarán.Funciona para mí.
fuente
Para cualquiera que todavía esté mirando esta pregunta. Esto es para un hipervínculo, pero puede modificarlo solo para un subrayado simple:
Cree un elemento dibujable (hyperlink_underline.xml):
Crea un nuevo estilo:
Luego use este estilo en su TextView:
fuente
Si su TextView tiene un ancho fijo, la solución alternativa puede ser crear una Vista que se verá como un subrayado y colocarla justo debajo de su TextView.
fuente
Una solución simple y sostenible es crear una lista de capas y convertirla en el fondo de su TextView:
fuente
5 formas asombrosas de subrayar un TextView en Android: Kotlin / Java y XML
String html = "<u>Underline using Html.fromHtml()</u>"; textview.setText(Html.fromHtml(html));
Pero Html.fromHtml (recurso String) quedó obsoleto en API 24.
Para que pueda usar la última biblioteca de soporte de Android androidx.core.text.HtmlCompat . Antes de eso, debe incluir la dependencia en su proyecto.
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>"; //underline textview using HtmlCompat.fromHtml() method textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
Usando strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
textview13.setText(HtmlCompat.fromHtml(getString(R.string.underline_text), HtmlCompat.FROM_HTML_MODE_LEGACY));
usando PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); textview2.setText("2. Underline using setPaintFlags()");
usando SpannableString
fuente