Comment fusionner certains spannable objets?
Je partage un spannable objet en 3 parties, faire différentes opérations, et puis j'ai besoin de les fusionner.
Spannable str = editText.getText();
Spannable selectionSpannable = new SpannableStringBuilder(str, selectionStart, selectionEnd);
Spannable endOfModifiedSpannable = new SpannableStringBuilder(str, selectionEnd, editText.getText().length());
Spannable beginningOfModifiedSpannable = new SpannableStringBuilder(str, 0, selectionStart);
Comment puis-je le faire? Je n'ai pas trouvé la méthode ou le constructeur pour le faire.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser ceci:
http://developer.android.com/reference/android/text/TextUtils.html#concat(java.lang.CharSequence...)
TextUtils.concat(span1, " ", span2);
style (c'est à dire span) pour span1 disparu, que c'est la représentation sous forme de chaîne de gauche. L'habillage "" en Fractionné n'a pas aidé.StyleSpan
sur les deux travées. Vous devez créer un nouveauStyleSpan
pour chaque travée. (voir cette réponse)" "
est unString
, qui travaille avec lesCharSequence
interface toutefois, il n'est pas unSpannable
.new SpannableString(" ")
serait de travailler à la place de" "
Merci, ça fonctionne. J'ai remarqué que je peux fusionner les même 3 spannable objet:
Je sais que c'est vieux. Mais après la modification de kotlin stdlib un peu j'ai ce code:
Espère que ça peut aider quelqu'un.
Comme marwinXXII dit dans un commentaire, à l'aide de
TextUtils.concat
ne fonctionne pas mais peut causer la perte de styles, dans certains cas, lorsque vous avez plusieurs instances de la même durée dans un seulCharSequence
.Une solution pourrait être d'écrire les
CharSequence
à unParcel
et puis le lire. Exemple Kotlin extension de code ci-dessous:Exemple d'utilisation de ce code:
Maintenant, vous pouvez concaténer des tonnes de
CharSequences
sans se soucier de perdre les styles et mise en forme que vous avez sur eux!Notez que cela fonctionnera pour plus styles, il ne fonctionne pas tout le temps, mais devrait être suffisant pour couvrir tous les styles de base.