Comment mettre une partie du texte en gras lorsque l'on utilise la fonction AlertDialog
's setMessage()
? Ajout de <b>
et </b>
à mon String
ne fonctionne pas.
Réponses
Trop de publicités?Vous devez utiliser Html.fromHtml()
aussi. Par exemple :
AlertDialog.setMessage(Html.fromHtml("Hello "+"<b>"+"World"+"</b>"));
Mise à jour :
On dirait que Html.fromHtml(String source)
a été déprécié dans la dernière version d'Android Nougat. Bien que la dépréciation ne signifie pas que vous devez changer votre code maintenant, mais c'est une bonne pratique de supprimer le code déprécié de votre application dès que possible.
Le remplacement est Html.fromHtml(String source, int flags)
. Il suffit d'ajouter un paramètre supplémentaire mentionnant un drapeau.
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
AlertDialog.setMessage(Html.fromHtml("Hello "+"<b>"+"World"+"</b>", Html.FROM_HTML_MODE_LEGACY));
} else {
@Suppress("DEPRECATION")
AlertDialog.setMessage(Html.fromHtml("Hello "+"<b>"+"World"+"</b>"));
}
Pour plus de détails, consultez le site cette réponse .
Este page décrit comment ajouter le formatage HTML aux chaînes de ressources.
<resources>
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.
</string>
</resources>
Et n'oubliez pas d'utiliser : Html.fromHtml
AlertDialog.setMessage(Html.fromHtml(getString(R.string.welcome_messages)));
Cela fonctionne pour moi
Aucune de ces solutions n'a fonctionné pour moi, mais je suis obligé d'utiliser une ancienne version de l'API et je ne pouvais donc pas utiliser Html.fromHtml
. Pour mettre en gras une partie du texte pour un AlertDialog
J'ai dû utiliser un SpannableString
.
String msgPart1 = getString(R.string.PartOneOfMessage);
SpannableString msg = new SpannableString(msgPart1 + " " + boldTextString + " " + getString(R.string.PartTwoOfMessage));
msg.setSpan(new StyleSpan(Typeface.BOLD), msgPart1.length() + 1, msgPart1.length() + datumName.length() + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
AlertDialog.setMessage(msg);
Je ne dis pas que c'est la meilleure méthode, mais c'est celle qui a fonctionné pour moi.