Fico feliz em saber disso ... Marque esta questão como resolvida para que outros usuários possam encaminhá-la.
Kartik Domadiya de
4
Uma terceira abordagem seria usar Html.fromHtml("<u>This text will be underlined</u>"), mas tenho que admitir que sou um fã muito maior do uso de SpannableStrings. @Kartik: Você também pode usar um StrikethroughSpanno texto para criar o efeito tachado. :)
MH.
Amei a terceira abordagem. Curto, simples e conciso e adiciona apenas uma linha extra de código ao meu programa.
Matt
Eu sei que isso é meio antigo, mas há uma maneira de definir a espessura do sublinhado?
Andreas Wong
qual deles é usado para o conteúdo de preferênciaActivity, na PreferenceCategory?
desenvolvedor de Android de
40
apenas coloque o texto com a tag <u> no arquivo de recurso string.xml
@CHAKRAVARTHI não funcionará se você converter o texto para string antes de configurar. Por exemplo, textView.setText(getString(R.string.text))<- errado . Certo:textView.setText(getText(R.string.text)) ou apenas textView.setText(R.string.text). A razão beind isso que getText()retorna Spannablecom vãos de sublinhado, mas se você usar getString()ele irá converter o Spannablepara Stringvãos resultantes sendo removido.
Se seu TextView tem largura fixa, a solução alternativa pode ser criar uma View que se pareça com um sublinhado e posicioná-lo logo abaixo de seu TextView.
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
Mas Html.fromHtml (recurso String) foi preterido na API 24.
Portanto, você pode usar a biblioteca de suporte do Android mais recente, androidx.core.text.HtmlCompat . Antes disso, você precisa incluir a dependência em seu projeto.
`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>
Respostas:
Existem três maneiras de sublinhar o texto em TextView.
SpannableString
setPaintFlags (); de TextView
Html.fromHtml ();
Deixe-me explicar todas as abordagens:
1ª abordagem
Para sublinhar o texto em TextView, você deve usar SpannableString
2ª abordagem
Você pode usar o método setPaintFlags de TextView para sublinhar o texto de TextView.
Por exemplo.
Você pode referir-se a constantes da classe Paint se quiser percorrer o texto.
3ª abordagem
Fazer uso de
Html.fromHtml(htmlString);
OU
fonte
Html.fromHtml("<u>This text will be underlined</u>")
, mas tenho que admitir que sou um fã muito maior do uso de SpannableStrings. @Kartik: Você também pode usar umStrikethroughSpan
no texto para criar o efeito tachado. :)apenas coloque o texto com a tag <u> no arquivo de recurso string.xml
e em sua atividade / fragmento
fonte
textView.setText(getString(R.string.text))
<- errado . Certo:textView.setText(getText(R.string.text))
ou apenastextView.setText(R.string.text)
. A razão beind isso quegetText()
retornaSpannable
com vãos de sublinhado, mas se você usargetString()
ele irá converter oSpannable
paraString
vãos resultantes sendo removido.Funciona para mim.
fonte
Para quem ainda está olhando para esta questão. Isso é para um hiperlink, mas você pode modificá-lo para apenas um sublinhado:
Crie um drawable (hyperlink_underline.xml):
Crie um novo estilo:
Em seguida, use este estilo em seu TextView:
fonte
Se seu TextView tem largura fixa, a solução alternativa pode ser criar uma View que se pareça com um sublinhado e posicioná-lo logo abaixo de seu TextView.
fonte
Uma solução simples e sustentável é criar uma lista de camadas e torná-la o plano de fundo de seu TextView:
fonte
5 maneiras incríveis de sublinhar um TextView no Android - Kotlin / Java e XML
String html = "<u>Underline using Html.fromHtml()</u>"; textview.setText(Html.fromHtml(html));
Mas Html.fromHtml (recurso String) foi preterido na API 24.
Portanto, você pode usar a biblioteca de suporte do Android mais recente, androidx.core.text.HtmlCompat . Antes disso, você precisa incluir a dependência em seu projeto.
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
fonte