How to set part of text to bold when using AlertDialog.setMessage() in Android?

JavaAndroidAndroid Alertdialog

Java Problem Overview


How to set part of text to Bold when using AlertDialog's setMessage()? Adding <b> and </b> to my String doesn't work.

Java Solutions


Solution 1 - Java

You need to use Html.fromHtml() too. For example:

AlertDialog.setMessage(Html.fromHtml("Hello "+"<b>"+"World"+"</b>"));

Update:
Looks like Html.fromHtml(String source) has been deprecated in the Latest Android Nougat version. Although deprecation doesn't mean that you need to change your code now, but it's a good practice to remove deprecated code from your app as soon as possible.
The replacement is Html.fromHtml(String source, int flags). You just need to add an additional parameter mentioning a flag.

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>"));
}

For more details have a look at this answer.

Solution 2 - Java

This page describes how to add HTML formatting to resource strings.

<resources>
    <string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.  
    </string>
</resources>

And do not forget to use: Html.fromHtml

AlertDialog.setMessage(Html.fromHtml(getString(R.string.welcome_messages)));

This works for me

Solution 3 - Java

None of these solutions worked for me, but I am required to use an older version of the API so I could not use Html.fromHtml. To bold part of the text for an AlertDialog I had to use a 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);

I am not saying this is the best way, but it was the way that worked for me.

Solution 4 - Java

<string name="abouttxt">"<b>Info</b>\ntexttxtxtxtxt"</string>

this works for me in xml

Solution 5 - Java

In case if anyone wants to add only a single string:

<string name="abouttxt">&lt;b>Enter license key&lt;/b></string>

Add this line in your Alertdialog code.

dialog.setTitle(Html.fromHtml(getString(R.string.abouttxt)))

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSuitUpView Question on Stackoverflow
Solution 1 - JavanoobView Answer on Stackoverflow
Solution 2 - JavaelirigobeliView Answer on Stackoverflow
Solution 3 - JavaFredView Answer on Stackoverflow
Solution 4 - JavachrisView Answer on Stackoverflow
Solution 5 - JavaPrajwal WaingankarView Answer on Stackoverflow