在 AlertDialog.Builder 中设置文本格式

Al *_*ath 7 android android-dialog

我无法让 AlertDialog 中的文本以粗体或斜体显示。

我尝试过直接格式化,也尝试过使用Android 字符串资源页面中的 CharSequence 实用程序,但我总是只得到纯文本。
我究竟做错了什么?

MyFragment.java

String idFormatted = String.format(resources.getString(R.string.id));
CharSequence idStyledText = Html.fromHtml(idFormatted);

CharSequence nameItalic = Utilities.italic(resources.getString(R.string.name));

String typeFormatted = String.format(resources.getString(R.string.type));
CharSequence typeStyledText = Html.fromHtml(idFormatted);

AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setPositiveButton("Dismiss",
        new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        }).setIcon(android.R.drawable.ic_dialog_info);

builder.setMessage( idFormatted + myData.getId() + "\t\t" +  nameItalic + myData.getName() + "\t\t" +  typeFormatted + myData.getType() );   
Dialog dialog = builder.create();
dialog.setTitle("Details");
dialog.show();        
Run Code Online (Sandbox Code Playgroud)

字符串.xml

<string name="id"><i>Id: </i></string>
<string name="name"><i>Name: </i></string>
<string name="type"><i>Type: </i></string>
Run Code Online (Sandbox Code Playgroud)

编辑: - - - - - - - - - - - - - - - - - - - - - - - - -------------
Mohammad Arman 建议 string.xml 中的字符串不会保留 html。这似乎很可能是真的,尽管我还不能证明这一点。

根据他和 Farbod Salamat-Zadeh 的回答,我尝试了下面的代码,但结果仍然相同,只是纯文本。

Spanned idLabel = Html.fromHtml("<i>" + resources.getString(R.string.id) + "</i>");
Spanned nameLabel = Html.fromHtml("<i>" + resources.getString(R.string.name) + "</i>");
Spanned typeLabel = Html.fromHtml("<i>" + resources.getString(R.string.type) + "</i>");
...
builder.setMessage(idLabel.toString() + myData.getId() + "\t\t" + nameLabel + myData.getName());
Run Code Online (Sandbox Code Playgroud)

编辑2:------------------------------------------------ -----------
我已经按照基兰的建议进行了尝试:

<string name="italic_string"><![CDATA[<i>italic-string</i>]]></string>
Run Code Online (Sandbox Code Playgroud)

进而:

String formattedText = getString(R.string.italic_string);
Spanned result = Html.fromHtml(formattedText);
builder.setMessage(result);
Run Code Online (Sandbox Code Playgroud)

这有效。

小智 6

您不能简单地将 HTML 存储在 strings.xml 文件中。您需要将它们放入 CDATA 中,如下所示:

<string name="id"><![CDATA[<i>Id: </i>]]></string>
Run Code Online (Sandbox Code Playgroud)

然后要显示格式化字符串,您仍然需要使用Html.fromHtml().