Exibindo Código HTML em Diálogos a Partir de Arquivos strings.xml no Android
Resposta Rápida
Utilize CDATA para inserir HTML em strings.xml
:
<string name="styled_text"><![CDATA[<b>Texto em negrito</b>]]></string>
Para exibir HTML em um TextView
, use o método Html.fromHtml
:
textView.setText(Html.fromHtml(getString(R.string.styled_text)));
O método android.text.Html.fromHtml()
é essencial para uma exibição ótima de HTML.
Criando Hiperlinks Interativos
Para habilitar links clicáveis em um TextView
, primeiro ative essa funcionalidade:
textView.setMovementMethod(LinkMovementMethod.getInstance());
Em seguida, configure os parâmetros correspondentes no seu arquivo de layout XML:
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:linksClickable="true"/>
Escapando Caracteres HTML
Ao trabalhar com strings em strings.xml
, lembre-se de escapar entidades HTML:
<string name="less_than"><</string> <!-- Escapando o símbolo "menor que", "<" -->
<string name="greater_than">></string> <!-- Escapando o símbolo "maior que", ">" -->
Escapar facilita a interpretação correta dos caracteres.
Preservando a Estrutura do Texto
Você pode preservar espaços e quebras de linha usando a tag HTML <pre>
:
<string name="preformatted_text"><![CDATA[<pre>Texto\n Formatado</pre>]]></string>
Para passar texto formatado para um TextView
, use o seguinte método:
textView.setText(Html.fromHtml(getString(R.string.preformatted_text)));
Usando WebView para HTML Complexo
Se TextView
não for suficiente para exibir HTML complexo, utilize WebView
:
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Então, carregue HTML complexo assim:
webView.loadData(getString(R.string.complex_html_string), "text/html; charset=UTF-8", null);
Estilizando Elementos de Texto com a Tag <span>
Para estilizar fragmentos específicos de texto, utilize a tag <span>
:
<string name="styled_span"><![CDATA[Texto simples <span style='color:red;'>Texto vermelho</span>]]></string>
Visualização
Um exemplo de visualização de HTML a partir de strings.xml
em uma tabela:
strings.xml | Saída no aplicativo |
---|---|
Texto normal: "Olá Mundo" | Olá Mundo |
Com HTML: | |
"<b>Olá</b> Mundo" | Olá Mundo |
strings.xml
enriquece o texto e as tags HTML proporcionam um efeito expressivo único.
Sem usar HTML: é apenas um esboço.
Com o uso de HTML: a imagem ganha vida!
Garantindo a Consistência do Texto
Para manter a consistência do texto no aplicativo, configure sua aparência usando android:textAppearance
:
<TextView
android:id="@+id/textView"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"/>
Essa abordagem permite uma aparência consistente do texto.
Lidando com Grandes Volumes de Dados
Para melhorar a experiência do usuário ao lidar com grandes volumes de conteúdo HTML em TextView
, é aconselhável usar ScrollView
:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/longTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ScrollView>
Inserindo Imagens
Inserir imagens no texto pode ser realizado através de ImageView
. Para facilitar o carregamento de imagens, utilize bibliotecas como Glide ou Picasso.
Armazenando e Acessando Strings HTML
Para garantir um código limpo e fácil gestão, armazene strings formatadas em strings.xml
e acesse-as através da função getString()
conforme necessário:
String formatoElegante = getString(R.string.html_content);
textView.setText(Html.fromHtml(formatoElegante));
Recursos Úteis
- Recursos de String | Android Developers — Guia oficial sobre recursos de string no Android.
- android - Como exibir HTML em TextView? - Stack Overflow — Discussão sobre como exibir HTML em
TextView
no Stack Overflow. - Estilizando texto internacionalizado no Android | por Florina Muntenescu | Android Developers | Medium — Sobre as nuances de trabalhar com
SpannableStrings
no Android. - Recursos de String | Android Developers — Sobre formatação e estilização de recursos de string no Android.
- Spannable | Android Developers — Documentação sobre como estilizar texto através de
Spannable
. - Html | Android Developers — Informações detalhadas sobre o método
Html.fromHtml()
para Android. - Linguagem de Marcação Extensível (XML) 1.0 (Quinta Edição) — Descrição da sintaxe XML e escape de caracteres.
- The CommonsBlog — Tags HTML Suportadas pelo TextView — Lista de tags HTML suportadas pelo
TextView
no Android.