J'ai de simples HTML :
<h2>Title</h2><br>
<p>description here</p>
Je veux afficher du texte stylé en HTML en TextView
. Comment faire ?
J'ai de simples HTML :
<h2>Title</h2><br>
<p>description here</p>
Je veux afficher du texte stylé en HTML en TextView
. Comment faire ?
Vous devez utiliser Html.fromHtml()
pour utiliser le langage HTML dans vos chaînes XML. Le simple fait de référencer une chaîne avec du HTML dans votre mise en page XML ne fonctionnera pas.
Voici ce que vous devez faire en Java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>", Html.FROM_HTML_MODE_COMPACT));
} else {
textView.setText(Html.fromHtml("<h2>Title</h2><br><p>Description here</p>"));
}
Et en Kotlin :
textView.text = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT)
} else {
Html.fromHtml(html)
}
Quand je mets ces lignes, un vide se produit entre h2 et p, même si j'ai supprimé br mais il y a toujours un vide... comment le résoudre ?
h2
par définition, crée beaucoup de marge autour de lui-même. et p
est également livré avec une certaine marge. Si vous ne voulez pas de marge, vous pouvez envisager d'utiliser d'autres éléments html.
Comment puis-je définir un texte html dans l'attribut style du contrôle textview ? Cela ne fonctionnera probablement pas.
Cela m'aide beaucoup. Mais toutes les balises ne sont pas encore prises en charge arkapp.medium.com/Android-set-html-in-text-view-b912e1a96b21
Jetez un coup d'oeil là-dessus : https://stackoverflow.com/a/8558249/450148
C'est assez bon aussi !
<resource>
<string name="your_string">This is an <u>underline</u> text demo for TextView.</string>
</resources>
Cela ne fonctionne que pour quelques balises.
@mente Selon codes sources : <a>, <b>, <big>, <blockquote>, <br>, <cite>, <dfn> <div align="...">, <em>, <font size="..." color=".... " face="..."> <h1-6>, <i>, <img src="...">, <p>, <small> <strike>, <strong>, , <sup>, <tt>, <u>(source : dzone.com/snippets/how-display-html-Android )
@JerabekJakub mais attention, si vous allez gérer des img vous devez implémenter Html.ImageGetter.
Si vous voulez être en mesure de le configurer par le biais de xml sans aucune modification du code java, vous pouvez trouver cette idée utile. Il suffit d'appeler init depuis le constructeur et de définir le texte comme html.
public class HTMLTextView extends TextView {
... constructors calling init...
private void init(){
setText(Html.fromHtml(getText().toString()));
}
}
xml :
<com.package.HTMLTextView
android:text="@string/about_item_1"/>
Si vous essayez d'afficher du HTML à partir d'un identifiant de ressource de type chaîne, le formatage peut ne pas apparaître à l'écran. Si c'est le cas, essayez d'utiliser des balises CDATA à la place :
strings.xml:
<string name="sample_string"><![CDATA[<h2>Title</h2><br><p>Description here</p>]]></string>
...
MainActivity.java:
text.setText(Html.fromHtml(getString(R.string.sample_string));
Voir ceci poste pour plus de détails.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
8 votes
Voulez-vous afficher les balises ou les omettre ?
1 votes
Consultez ce lien pour un exemple fonctionnel javatechig.com/2013/04/07/how-to-display-html-in-Android-view
1 votes
Si vous cherchez la solution de l'obsolescence, c'est ici. stackoverflow.com/questions/37904739/
1 votes
Textview.setText(Html.fromHtml("your HTML")) ; est la meilleure méthode pour afficher uniquement les balises HTML. Il existe également une méthode pour jouer du JS.
0 votes
Android ne prend pas en charge toutes les balises HTML. Vérifiez ceci arkapp.medium.com/Android-set-html-in-text-view-b912e1a96b21 pour mieux comprendre comment utiliser l'affichage du texte.