Je veux utiliser simplement des balises de la ressource XML String dans la liaison de données.
public class StringUtils {
public static String text(String a) {
return a;
}
}
XML:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{StringUtils.text(@string/underlined_text)}" />
Chaîne :
<string name="underlined_text">This is a <u>underlined</u> text.</string>
À la fin, lorsque j'ai débogué la méthode de texte, j'ai réalisé que la balise était supprimée.
3 réponses
Vous pouvez essayer d'utiliser des codes d'échappement HTML:
<string name="underlined_text">This is a <u>underlined</u> text.</string>
Je me demande également si la liaison de données est vraiment nécessaire ici - vous pouvez simplement utiliser android:text="@string/underlined_text"
Modifier: Je suis également tombé sur cette réponse qui pourrait vous être utile
Que diriez-vous:
android:text="@string/underlined_text"
Vous pouvez modifier la chaîne définie comme ceci pour conserver la chaîne étendue:
<string name="underlined_text">This is a <u>underlined</u> text.</string>
Il n'a jamais été là en premier lieu, très probablement.
Dans une ressource chaîne, les éléments HTML intégrés reconnus, comme <u>
, sont interprétés comme faisant partie de la ressource. Si vous appelez getString()
, ces éléments HTML sont supprimés. Si vous appelez getText()
sur un Resources
, vous obtenez un CharSequence
qui contient le balisage (par exemple, UnderlineSpan
).
Puisque vous utilisez String
partout, vos éléments HTML seront ignorés.
Je ne sais pas exactement pourquoi vous configurez la liaison de données de cette façon. Si tu utilises:
android:text="@string/underlined_text"
Vous obtiendriez ce que vous voulez, et plus rapidement. Après tout, StringUtils
ne fait rien.
Mais, si vous êtes vraiment sûr de vouloir utiliser la liaison de données:
- Appelez
getText()
sur unResources
avec votre ID de ressource de chaîne - Transmettez ce
CharSequence
pour accéder à votre expression de liaison de données
Vous pouvez également envelopper le contenu de votre ressource de chaîne dans CDATA
, pour conserver le HTML brut intact. À un moment donné, cependant, vous devrez utiliser Html.fromHtml()
ou quelque chose de similaire pour obtenir le CharSequence
avec la mise en forme appliquée.
Questions connexes
Questions liées
De nouvelles questions
android
Android est le système d'exploitation mobile de Google, utilisé pour la programmation ou le développement d'appareils numériques (Smartphones, tablettes, automobiles, téléviseurs, Wear, Glass, IoT). Pour les sujets liés à Android, utilisez des balises spécifiques à Android telles que l'intention d'Android, l'activité d'Android, l'adaptateur Android, etc. Pour les questions autres que le développement ou la programmation, mais liées au cadre Android, utilisez ce lien: https: // android.stackexchange.com.