我无法在AlertDialog中获取文本以粗体或斜体显示。
我已尝试直接格式化并使用CharSequence utilties from the Android string-resource page,但我总是得到纯文本 我做错了什么?
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();
的strings.xml
<string name="id"><i>Id: </i></string>
<string name="name"><i>Name: </i></string>
<string name="type"><i>Type: </i></string>
编辑:--------------------------------------------- ----------------
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());
Edit2:--------------------------------------------- --------------
我已经尝试过Keelan的建议:
<string name="italic_string"><![CDATA[<i>italic-string</i>]]></string>
然后:
String formattedText = getString(R.string.italic_string);
Spanned result = Html.fromHtml(formattedText);
builder.setMessage(result);
这很有效。
答案 0 :(得分:2)
您可以在任何地方获取文字以粗体或斜体显示 - 我使用以下内容;
Spanned italicText = Html.fromHtml("<i>" + "My italic text" + "</i>");
Spanned boldText = Html.fromHtml("<b>" + "My boldtext" + "</b>");
// You can use different HTML tags depending on what you want.
答案 1 :(得分:1)
您需要在Java类的单独String
变量中格式化html版本(否则由于某种原因它将无效)。
String myId = <i>Id: </i>;
String myName = <b>Name: </b>
然后你必须在textView中添加它,如下所示:
textView1.setText(Html.fromHtml(myId +" "+ "1234");
textView2.setText(Html.fromHtml(myName +" "+ "Al Lelopath")
为什么您的方法不起作用
这是因为当您从string.xml导入字符串时,它将丢失该属性并将其作为纯文本发送。这就是Android无法将其视为html的原因。
答案 2 :(得分:1)
You can't simply store HTML in a strings.xml file.您需要将它们放入CDATA中,如下所示:
<string name="id"><![CDATA[<i>Id: </i>]]></string>
然后要显示格式化字符串,您仍需要使用Html.fromHtml()
。