2016-12-19 4 views
0

La réponse à this question fonctionne parfaitement pour mon texte ... la première fois. J'ai des chaînes définies par fichier-ressources:Texte soulignant dans Android qui persiste à travers une chaîne remplacer

<string name="permission_replace">PERMISSION</string> 
<string name="warn_permission">This app needs PERMISSION to work properly. Update in <u>settings</u>.</string> 

Les <u> balises fonctionnent correctement la première fois que j'afficher le texte, mais quand je vais remplacer mon espace réservé ("PERMISSION") le soulignement est perdu. Voici comment je fais le remplacement:

warnPermissionText.setText(warnPermissionText.getText().toString().replaceAll(getString(R.string.permission_replace),"some permission text")); 

Comment puis-je conserver les étiquettes de soulignement à travers le remplacement? Ou dois-je simplement les rajouter par programme? Je ne suis pas sûr de ce que la mise en forme sur le premier tour de magie.

Répondre

2

Chaque fois que vous appelez toString(), vous dites "hé, débarrassez-vous de tout ce joli formatage que j'avais là-dedans".

The TextUtils class possède un certain nombre de méthodes utilitaires qui peuvent être appliquées directement à un CharSequence, et qui doivent donc conserver le formatage. Dans votre cas, the replace() method devrait fonctionner, au moins pour les cas simples.

Dans votre cas, vous pouvez également utiliser the N-parameter form of getString(), si vous changez This app needs PERMISSION to work properly. Update in <u>settings</u>.-This app needs %s to work properly. Update in <u>settings</u>. et fournir la valeur %s dans l'appel getString().