在Android中使用AlertDialog.setMessage()时如何将部分文本设置为粗体?

时间:2012-03-30 00:58:29

标签: java android alertdialog android-alertdialog

如何在使用AlertDialog的{​​{1}}时将部分文字设为粗体?将setMessage()<b>添加到我的</b>不起作用。

5 个答案:

答案 0 :(得分:90)

您也需要使用Html.fromHtml()。对于前。

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

<强>更新
在最新的Android Nougat版本中,Html.fromHtml(String source)已被弃用。虽然弃用并不意味着您现在需要更改代码,但最好尽快从应用中删除已弃用的代码。
替换为Html.fromHtml(String source, int flags)。您只需要添加一个提示标志的附加参数。

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 {
   AlertDialog.setMessage(Html.fromHtml("Hello "+"<b>"+"World"+"</b>"));
}

有关详细信息,请查看this answer

答案 1 :(得分:18)

page描述了如何将HTML格式添加到资源字符串。

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

不要忘记使用:Html.fromHtml

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

这对我有用

答案 2 :(得分:0)

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

这适用于xml

答案 3 :(得分:0)

如果有人只想添加一个字符串:

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

将此行添加到Alertdialog代码中。

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

答案 4 :(得分:0)

这些解决方案都不适合我,但我必须使用旧版本的 API,因此我无法使用 Html.fromHtml。为了将 AlertDialog 的文本部分加粗,我必须使用 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);

我并不是说这是最好的方法,但这是对我有用的方法。