Eu tenho HTML simples :
<h2>Title</h2><br>
<p>description here</p>
Quero exibir o texto com estilo HTML TextView
. Como fazer isso?
android
html
xml-parsing
textview
UMAR
fonte
fonte
Respostas:
Você precisa
Html.fromHtml()
usar o HTML em suas cadeias XML. Simplesmente referenciar uma String com HTML em seu layout XML não funcionará.Isto é o que você deve fazer:
fonte
h2
por definição, cria muita margem em torno de si. ep
também vem com alguma margem. se você não quiser essa lacuna, considere usar outros elementos html.android.text.Html.fromHtml
. Eu sei que a maioria dos IDEs irá corrigi-lo para você, mas para facilitar a leitura, é melhor conhecer os nomes dos pacotes.setText (Html.fromHtml (bodyData)) foi preterido após a API 24. Agora você deve fazer isso:
fonte
Dê uma olhada nisto: https://stackoverflow.com/a/8558249/450148
Também é muito bom !!
Funciona apenas para algumas tags.
fonte
Se você deseja configurá-lo através do xml sem nenhuma modificação no código java, poderá achar útil essa ideia. Basta chamar init do construtor e definir o texto como html
xml:
fonte
Se você está tentando mostrar HTML a partir de um ID de recurso de sequência, a formatação pode não aparecer na tela. Se isso estiver acontecendo com você, tente usar as tags CDATA:
...
Veja este post para mais detalhes.
fonte
O código abaixo deu o melhor resultado para mim.
fonte
fonte
Se você deseja exibir algum texto html e realmente não precisa de um
TextView
, pegue umWebView
e use-o da seguinte maneira:Isso também não o restringe a algumas tags html.
fonte
layout_height="wrap_content"
. Você precisará definir uma altura explícita ou match_parent.A melhor abordagem para usar as seções CData para a sequência no arquivo strings.xml para obter uma exibição real do conteúdo html no TextView, o snippet de código abaixo, fornecerá a você uma idéia justa.
A seção CData no texto da string mantém os dados da tag html intactos, mesmo após a formatação do texto usando o método String.format. Portanto, Html.fromHtml (str) funciona bem e você verá o texto em negrito na mensagem de boas-vindas.
Resultado:
fonte
Vale ressaltar que o método Html.fromHtml (origem da string) está obsoleto no nível 24 da API. Se essa é a sua API de destino, você deve usar o Html.fromHtml (origem da string, sinalizadores int) .
fonte
Gostaria também de sugerir o seguinte projeto: https://github.com/NightWhistler/HtmlSpanner
O uso é quase o mesmo que o conversor android padrão:
Encontrei depois que eu já comecei pela própria implementação do conversor de html para spannable, porque o padrão Html.fromHtml não oferece flexibilidade suficiente sobre o controle de renderização e nem mesmo a possibilidade de usar fontes personalizadas do ttf
fonte
Eu sei que esta pergunta é antiga. Outras respostas aqui sugerindo
Html.fromHtml()
método. Eu sugiro que você useHtmlCompat.fromHtml()
doandroidx.core.text.HtmlCompat
pacote. Como esta é a versão compatível com versões anteriores doHtml
classe.Código de amostra:
Dessa forma, você pode evitar a verificação da versão da API do Android e é fácil de usar (solução de linha única).
fonte
Uso simples
Html.fromHtml("html string")
. Isso vai funcionar. Se a string tiver tags como<h1>
espaços, virão espaços. Mas não podemos eliminar esses espaços. Se você ainda quer remover os espaços, então você pode remover as tags na cadeia e, em seguida, passar a string para o métodoHtml.fromHtml("html string");
. Além disso, geralmente essas strings vêm do servidor (dinâmico), mas não frequentemente, se for o melhor passar a string como é para o método do que tentar remover as tags da string.fonte
fonte
Faça um método global como:
Você também pode usá-lo em sua Atividade / Fragmento, como:
fonte
Eu implementei isso usando o modo de exibição da web. No meu caso, eu tenho que carregar a imagem do URL junto com o texto na exibição de texto e isso funciona para mim.
fonte
Foi sugerido, através de várias respostas, o uso da classe de estrutura Html , conforme sugerido aqui, mas infelizmente essa classe possui um comportamento diferente em diferentes versões do Android e vários bugs não corrigidos , conforme demonstrado nas edições 214637 , 14778 , 235128 e 75953 .
Portanto, convém usar uma biblioteca de compatibilidade para padronizar e suportar a classe Html nas versões do Android, o que inclui mais retornos de chamada para elementos e estilo:
Embora seja semelhante à classe Html da estrutura, algumas alterações de assinatura foram necessárias para permitir mais retornos de chamada. Aqui está o exemplo da página do GitHub:
fonte
Sempre que você escrever uma visualização de texto personalizada, o recurso básico de texto de conjunto de HTML será desvanecido em alguns dos dispositivos.
Então, precisamos seguir os passos adicionais que fazem funcionar
fonte
atualização da resposta acima
fonte
Use o código abaixo para obter a solução:
Método de Utitilty
fonte
Criadas extensões do Kotlin para converter html de String -
fonte
Posso sugerir uma solução um tanto hacky, mas ainda genial! Eu peguei a ideia deste artigo e a adaptei para o Android. Basicamente, você usa
WebView
ae insere o HTML que deseja mostrar e editar em uma tag div editável. Dessa forma, quando o usuário toca noWebView
no teclado, aparece e permite a edição. Eles apenas adicionam um pouco de JavaScript para recuperar o HTML editado e pronto!Aqui está o código:
E aqui está o componente como uma essência.
Nota: Eu não precisava do retorno de chamada de alteração de altura da solução original, portanto, falta aqui, mas você pode adicioná-lo facilmente, se necessário.
fonte
Se você usa
androidx.
* classes em seu projeto, você deve usarHtmlCompat.fromHtml(text, flag)
. A fonte do método é:@NonNull public static Spanned fromHtml(@NonNull String source, @FromHtmlFlags int flags) { if (Build.VERSION.SDK_INT >= 24) { return Html.fromHtml(source, flags); } //noinspection deprecation return Html.fromHtml(source); }
É uma maneira melhor do que Html.fromHtml, pois há menos código, apenas uma linha e a maneira recomendada de usá-lo.
fonte
Você pode usar a função de extensão Kotlin simples como esta:
E uso:
fonte
Basta usar:
fonte