android textview - Android Spanned, SpannedString, Spannable, SpannableString et CharSequence




1 Answers

Quel est le but de ces interfaces?

CharSequence est une interface Java standard représentant une séquence de caractères. String est l'implémentation concrète la plus couramment utilisée de CharSequence , suivie de StringBuilder .

Spanned est une CharSequence avec des " CharSequence " indiquant le formatage à appliquer aux parties du texte, où ces plages ne peuvent pas être modifiées.

Spannable est un Spanned , ajoutant la possibilité de modifier les travées (pour ajouter ou supprimer la mise en forme), mais pas pour modifier le texte lui-même.

SpannedString est une implémentation concrète de l'interface Spanned .

SpannableString est une implémentation concrète de l'interface Spannable .

Dans quels scénarios est-il le plus commun de les utiliser?

Quand il y a une méthode qui en retourne une (par exemple, getText() sur un EditText ) ou quand il y a une méthode qui en prend une en tant que paramètre (par exemple, setText() sur un TextView ).

Votre cas cité d'utilisation de Html.fromHtml() est peut-être le plus courant dans le développement Android classique, car un TextView avec un Spanned est beaucoup plus léger qu'un WebView . Cependant, il existe d'autres cas d'utilisation, tels que:

Dans quels cas est-il préférable d'éviter de les utiliser?

Ils sont singulièrement affreux à combattre la calvitie, le déneigement, la réparation de pompe à chaleur, la fabrication d'un soufflé, etc.

:-)

Y a-t-il des impacts de performance évidents à considérer lors de l'utilisation de l'un d'entre eux?

Les interfaces, par définition, n'ont pas «d'impact sur les performances» - elles sont simplement une description d'une API.

Je ne suis pas conscient que SpannableString est significativement plus lent que SpannedString à une opération particulière. Cependant, SpannableStringBuilder (qui permet de manipuler le texte en plus des travées qui SpannableString forme ce texte) peut être un peu plus lent que SpannableString ou SpannedString pour diverses choses. La question de savoir si les différences de performance sont suffisantes ou non dépendra de leur utilisation.

example settext

Android offre une variété d'interfaces liées au texte et aux chaînes de caractères: Spanned , SpannedString , Spannable , SpannableString et CharSequence .

J'ai utilisé tout ce qui précède dans divers scénarios, généralement après avoir utilisé Html.fromHtml() pour afficher du texte TextView dans un TextView afin de lui appliquer un style.

J'ai essayé de comprendre le but / l'utilisation de ces interfaces de la documentation officielle d'Android et ai échoué car il est assez déroutant .. Quel est le but de ces interfaces? Dans quels scénarios est-il le plus commun de les utiliser? Dans quels cas est-il préférable d'éviter de les utiliser? Y a-t-il des impacts de performance évidents à considérer lors de l'utilisation de l'un d'entre eux?

Si quelqu'un pouvait fournir une explication décente, il serait très apprécié.




Related

android android-textview