Eu sei que posso colocar tags HTML de escape em recursos de string. No entanto, olhando o código-fonte do aplicativo de contatos, posso ver que eles têm uma maneira de não ter que codificar o HTML. Citação do aplicativo de contatos strings.xml :
<string name="contactsSyncPlug"><font fgcolor="#ffffffff">Sync your Google contacts!</font>
\nAfter syncing to your phone, your contacts will be available to you wherever you go.</string>
Infelizmente, quando tento algo semelhante (como Hello, <b>World</b>!
), getString()
retorna a string sem as tags (posso ver isso em logcat
). Por que é que? Como posso obter a string original, com tags e tudo? Como o aplicativo de contatos está fazendo isso?
\"
comostyle
propriedade, no entanto. Exemplo<a style=\"...\">link</a>
Parece que
getString()
faz exatamente isso - recebe uma string . Para usar isso, você deve usargetText()
(e não maisHtml.fromHtml()
), ou seja:No entanto, parece que a
android:text
propriedade faz exatamente a mesma coisa, e o seguinte é equivalente:E em
strings.xml
:fonte
\n
?A melhor solução é usar os recursos de uma forma:
e então exibi-lo com:
Tente usar esse recurso sem
<![CDATA[ ]]>
e comtv.setText(getText(R.string.htmlsource));
e você verá a diferença.fonte
Eu sei que esta é uma pergunta antiga, mas parece que a resposta mais eficiente ainda não foi proposta.
Apenas use
HTML-escaped
caracteres para que não seja processado por,getString
mas será processado porHtmlCompact.fromHtml
(ou o mais antigoHtml.fromHtml
).Isso também suporta mais tags, como links HTML, etc., não apenas formatação como
getString
método.Por exemplo, algo assim deve funcionar:
No seu caso, você substitui
<
por<
assim:fonte
funciona para mim sem o bloco CDATA.
Eu uso isso no layout.
fonte
Idéia: coloque o HTML em arquivos formatados em JSON e armazene-os em / res / raw. (JSON é menos exigente)
Armazene os registros de dados como este em um objeto de matriz:
Para ler os dados em seu aplicativo:
Finalmente, a
Data
classe é apenas um contêiner de variáveis públicas para fácil acesso ...fonte