Usando Strings Formatadas em HTML a partir de XML em TextView
Resposta Rápida
Para inserir instantaneamente HTML em um TextView, use o seguinte código:
textView.setText(Html.fromHtml(getString(R.string.html_string), Html.FROM_HTML_MODE_LEGACY));
No arquivo strings.xml, adicione HTML utilizando CDATA:
<string name="html_string"><![CDATA[<b>Texto</b> em <i>itálico</i>]]></string>
O método Html.fromHtml()
converte HTML em texto Spannable para seu TextView.
Tratando Caracteres Especiais em HTML
Às vezes, ao trabalhar com HTML, pode haver dificuldades:
- Caracteres como ' (apóstrofo), " (aspas), & (e comercial) são considerados especiais e requerem escapamento.
- Para exibir corretamente um e comercial, use
&
para manter o código limpo.
Compatibilidade com Diferentes Versões do Android
As abordagens para lidar com HTML podem variar dependendo da versão do Android:
- Para versões do Android anteriores ao N (API 24), bastava usar o método
Html.fromHtml()
. - A partir do Android Nougat, você pode usar Markdown ou flags específicas para o método
Html.fromHtml()
para garantir elegância e precisão na renderização. - É essencial usar
Build.VERSION.SDK_INT
para verificar a versão da API do Android.
Classes e Atributos Personalizados
Crie uma subclasse de TextView para estender a funcionalidade:
public class HtmlTextView extends TextView {
public HtmlTextView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.HtmlTextView);
String htmlText = a.getString(R.styleable.HtmlTextView_htmlText);
if (htmlText != null) {
setText(Html.fromHtml(htmlText, Html.FROM_HTML_MODE_COMPACT));
}
a.recycle();
}
}
Essa abordagem é muito mais elegante do que envolver uma Activity para formatar o TextView
.
Descontinuando Métodos Obsoletos
Com cada atualização do Android, os desenvolvedores precisam fazer alterações em seu código.
- Use
HtmlCompat.fromHtml()
da biblioteca AndroidX. - Certifique-se de que
strings.xml
esteja em conformidade com as diretrizes mais recentes do Android.
Visualização
Usar strings formatadas em HTML em XML para um TextView fica assim:
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/html_formatted_string" />
Elemento em strings.xml
:
<string name="html_formatted_string">
<![CDATA[
<b>Texto em negrito</b> e <i>Texto em itálico</i>.
]]>
</string>
Texto normal em XML: "Texto em negrito e Texto em itálico."
Texto na tela após a conversão: Texto em negrito e Texto em itálico.
Métodos e Técnicas Não Oficiais
Às vezes, métodos e técnicas úteis podem ser encontrados em fóruns comunitários ou rastreador de bugs. Esses podem ser verdadeiras surpresas para os desenvolvedores!
Bibliotecas de Terceiros como Assistência
Em casos onde os métodos embutidos não são suficientes:
- Markwon é utilizado para exibir Markdown em
TextView
, como uma alternativa à formatação em HTML. - Bibliotecas como RichTextView facilitam o trabalho com HTML e Markdown.
Estilização Avançada de Texto
Estilize textos em TextView
como se seu mordomo pessoal estivesse fazendo isso:
- Use
negrito
, itálico,sublinhado
e outros estilos diretamente emstrings.xml
. - Esqueça o getString() e use getText() para preservar todos os elementos estilísticos do seu texto.
TextView Personalizado – O Caminho Mais Curto para o Sucesso
Utilizar um TextView personalizado abre novas possibilidades para gerenciar a exibição de HTML e reduz a duplicação de código.
Recursos Úteis
- Recursos de String | Desenvolvedores Android — guia detalhado sobre recursos de string no desenvolvimento Android.
- android - Como exibir HTML em TextView? - Stack Overflow — uma comunidade onde profissionais ajudam a resolver problemas.
- Recursos de String | Desenvolvedores Android — detalhes sobre estilização de texto usando HTML no Android.
- XML no Android: Fundamentos e Diferentes Arquivos XML Usados no Android | Abhi Android — guia abrangente sobre XML no Android.
- Visão Geral dos Recursos de Aplicação | Desenvolvedores Android — guia sobre recursos em aplicativos Android.
- Home · codepath/android_guides wiki · GitHub — coleção de trechos de código e guias para desenvolvedores Android.