J'ai googlé ma question mais il n'y a pas de réponse de travail fournie. Comment ajouter une liste à puces à ma vue de texte.
89
Difficile à faire car ul / li / ol ne sont pas pris en charge. Heureusement, vous pouvez l'utiliser comme sucre syntaxique:
• foo<br/>
• bar<br/>
• baz<br/>
•
est l'entité html pour une puce de liste plus de choix sont ici http://www.elizabethcastro.com/html/extras/entities.html
en savoir plus 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 cela avec Html.fromHtml
((TextView)findViewById(R.id.my_text_view)).setText(Html.fromHtml(myHtmlString));
<string name="string_name"><![CDATA[ • foo<br /> • bar... ]]></string>
ul
/li
est pris en charge maintenant stackoverflow.com/questions/9754076/…browep a bien expliqué le chemin sur HTML. La solution fournie avec l'entité html peut être utile. Mais cela ne comprend que la balle. Si votre texte est renvoyé à la ligne, le retrait ne sera pas correct.
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é ... (La même chose avec l'utilisation d'une vue de liste.)
J'aime l' approche créative de Nelson : D, mais cela ne vous donne pas la possibilité d'ajouter une liste non ordonnée à une vue texte.
Mon exemple de liste non ordonnée avec des puces en utilisant BulletSpan
Positif:
Négatif:
la source
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 largeur de la hauteur. .. :)
vous pouvez utiliser un raccourci pour obtenir cette puce en tapant
Pour les fenêtres
pour Mac
la source
Inspiré par les différentes réponses ici, j'ai créé une classe Utilitaire pour en faire une ligne simple . Cela créera une liste à puces avec indentation pour le texte encapsulé. Il a des méthodes pour combiner des chaînes, des ressources de chaîne et des ressources de tableau de chaînes.
Cela créera une CharSequence que vous pourrez passer à un TextView. Par exemple:
J'espère que c'est utile. Prendre plaisir.
Remarque: Cela utilisera la puce standard du système, un petit cercle de la même couleur que le texte. Si vous voulez une puce personnalisée, envisagez de sous- classer BulletSpan et de la remplacer
drawLeadingMargin()
pour dessiner la puce souhaitée. Jetez un œil à la source BulletSpan pour avoir une idée de son fonctionnement.la source
C'est de loin le plus simple.
la source
Extension Kotlin prête à l'emploi
Usage:
Couleurs et taille:
Pour changer la couleur ou la taille des puces, utilisez CustomBulletSpan au lieu de BulletSpan
la source
Une option que j'ai utilisée était de définir la puce pouvant être dessinée à l'aide d'un style.
Usage:
la source
android:drawableLeft=
utilisez TextView simple avec un dessin composé. Par exemple
la source
Voici une autre solution, pas exactement l'ajout d'une liste à une vue de texte, mais je suppose que l'objectif est le même. Il utilise TableLayout, qui n'a besoin que de XML et c'est vraiment simple pour les petites listes ordonnées ou non. Ci-dessous, un exemple de code que j'ai utilisé pour cela, pas une ligne de code en Java.
Positif:
Négatif:
chaque élément de liste est stocké en tant que ressource de chaîne distincte
et le style:
la source
Voici une liste à puces avec un en-tête et un onglet devant chaque élément.
la source
Je suis allé complètement exagéré et a créé une vue de texte personnalisée.
Utilisez-le comme ceci:
et le code:
la source
•
vous auriez à choisir un autre symbole fsymbols.com/signs/bullet-pointJe trouve que c'est le moyen le plus simple, laissez le textView tel qu'il est dans le fichier xml et utilisez le code java suivant. cela a parfaitement fonctionné pour moi.
la source
La liste à puces peut être simplement créée en utilisant les balises
<ul>
et<li>
dans la ressource chaîne.N'UTILISEZ PAS setText (Html.fromHtml (string)) pour définir la chaîne dans le code! Définissez simplement la chaîne normalement en xml ou en utilisant setText ( string ).
Par exemple:
fichier strings.xml
fichier layout.xml
Il produira le résultat suivant:
Les balises suivantes sont prises en charge comme ceci (directement intégrées dans la ressource de chaîne):
la source
<ul>
\n<ul><li>a</li> \n<li>b</li> \n<li>c</li></ul>
Car
single line text
vous pouvez simplement utiliser des drawables:draw_bullet_list.xml :
Vous pouvez changer
shape
,size
encolor
fonction de vos besoins.la source
Les deux options dont vous disposez pour créer une liste à puces sont
L'option 1 est la plus simple.
la source
une autre façon de prendre en charge les balises HTML manquantes consiste à les remplacer correctement, comme indiqué ici
la source
Si vous souhaitez créer une liste à puces avec la structure editText.
J'ai bénéficié de ces références
Vous pouvez utiliser ces puces
la source