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().
| 归档时间: |
|
| 查看次数: |
3696 次 |
| 最近记录: |