Comment ajouter une liste à puces à mon aperçu de texte ?
Merci pour le lien vers le site commonsware, je cherchais quelque chose comme ça depuis un certain temps !
Comment ajouter une liste à puces à mon aperçu de texte ?
Difficile à faire car les ul/li/ol ne sont pas supportés. Heureusement, vous pouvez l'utiliser comme sucre syntaxique :
• foo<br/>
• bar<br/>
• baz<br/>
•
est l'entité html pour une puce de liste d'autres choix sont ici http://www.elizabethcastro.com/html/extras/entities.html
Plus d'informations sur les balises prises en charge fournies par Mark Murphy (@CommonsWare) http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html Chargez-la avec Html.fromHtml.
((TextView)findViewById(R.id.my_text_view)).setText(Html.fromHtml(myHtmlString));
Merci pour le lien vers le site commonsware, je cherchais quelque chose comme ça depuis un certain temps !
Veuillez noter que si vous récupérez la chaîne de caractères à partir de values/strings.xml (en utilisant context.getString(R.string.yourstring) ;), vous devrez l'entourer d'une balise CDATA : <string name="string_name"><![CDATA[ • foo<br /> • bar... ]]></string>
browep a expliqué gentiment le chemin sur le HTML. La solution fournie avec l'entité html peut être utile. Mais elle ne comprend que la puce. Si votre texte est enveloppé, l'indentation ne sera pas correcte.
J'ai trouvé d'autres solutions intégrant une vue web. C'est peut-être approprié pour certains, mais je pense que c'est un peu exagéré... (De même que l'utilisation d'une vue en liste).
J'aime le l'approche créative de Nelson :D, mais il ne vous donne pas la possibilité d'ajouter une liste non ordonnée à une vue de texte.
Mon exemple de liste non ordonnée avec des puces en utilisant BulletSpan
CharSequence t1 = getText(R.string.xxx1);
SpannableString s1 = new SpannableString(t1);
s1.setSpan(new BulletSpan(15), 0, t1.length(), 0);
CharSequence t2 = getText(R.string.xxx2);
SpannableString s2 = new SpannableString(t2);
s2.setSpan(new BulletSpan(15), 0, t2.length(), 0);
textView.setText(TextUtils.concat(s1, s2));
Positif :
Négatif :
Cette approche (imitée à la lettre) ne fonctionne pas sur 2.2. Vous vous retrouvez avec une seule balle.
Bonjour Skone, cela fonctionne dans l'émulateur 2.2 et dans les versions originales d'Android. J'ai vu une version Android où l'espace entre la puce et le texte était ignoré. Mais la puce apparaissait toujours. Avez-vous une nouvelle ligne à la fin de vos chaînes de puces ?
Cette solution ne fonctionne pas lorsque vous modifiez l'espacement des lignes dans la fenêtre de texte.
J'ai trouvé une alternative... il suffit de copier cette puce " - " (c'est un texte) et de la coller dans le texte de votre vue texte, vous pouvez changer la couleur de la puce en changeant la couleur du texte et aussi tous les autres attributs comme la taille, la hauteur, la largeur... :)
vous pouvez utiliser un raccourci pour obtenir cette balle pendant que vous tapez.
pour Windows
ALT + 7
pour mac
ALT + 8
Alt+7 ne fonctionne pas pour moi (peut-être est-ce seulement une chose mac ou linux) mais copier et coller le caractère unicode - a fonctionné.
Si vous collez le symbole dans du code, c'est-à-dire dans une chaîne de caractères, gardez à l'esprit les problèmes liés aux caractères non ASCII et à l'encodage du fichier (essayez de changer l'encodage du fichier à partir du coin inférieur droit d'IntelliJ). Le mieux serait d'utiliser la séquence d'échappement correspondante (par ex. \u1234 ).
Une option que j'ai utilisée consistait à définir le dessin de la balle à l'aide d'un style.
<style name="Text.Bullet">
<item name="android:background">@drawable/bullet</item>
<item name="android:paddingLeft">10dp</item>
</style>
Utilisation :
<TextView android:id="@+id/tx_hdr"
android:text="Item 1" style="@style/Text.Bullet" />
J'ai remarqué que ma réponse datait d'il y a 8 ans et j'ai décidé de la mettre à jour en fonction des éléments suivants la dernière documentation Android pour styliser du texte avec des balises HTML :
<ul>
& <li>
dans vos ressources de chaîne. Ces balises et bien d'autres sont prises en charge !setText()
•
ou c'est un hexcode si vous voulez préserver l'indentation dans les chaînes de caractères à plusieurs lignes.Les listes à puces peuvent être créées à l'aide de la fonction <ul>
y <li>
dans la ressource chaîne.
NE PAS UTILISER setText(Html.fromHtml(string)) pour définir la chaîne de caractères dans le code ! Il suffit de définir la chaîne normalement dans le xml ou en utilisant setText( chaîne de caractères ).
Par exemple
fichier strings.xml
<string name="str1">
<ul>
<li><i>first</i> item</li>
<li>item 2</li>
</ul>
</string>
_layout.xml file_ ``` ```
Il produira le résultat suivant :
Les balises suivantes sont prises en charge de cette manière (directement intégrées dans la ressource chaîne) :
Does not work. Les balises html supportées sont <b>,<i>et <u>uniquement. developer.Android.com/guide/topics/resources/
Cela a parfaitement fonctionné pour moi ! La seule chose que j'ai eu à faire pour que tout fonctionne a été de mettre \n au début de chaque ligne, soit \n<ul><li>a</li> \n<li>b</li> \n<li>c</li></ul>
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.
0 votes
stackoverflow.com/a/40991388/9061224 voir si cela peut aider