我無法使AlertDialog中的文本顯示爲粗體或斜體。在AlertDialog.Builder中設置文本格式
我試過直接格式化,也使用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:----------------------------------------- ------------------
我試圖爲基蘭曾建議:
<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);
這工作。
感謝您的回覆。我剛剛嘗試了你的建議(請參閱編輯問題),但它沒有奏效。我是否正確實施了它? –
注意你的答案中的鏈接,OP不想格式化文本,但顯示html標籤。我想格式化文本。 –
@AlLelopath的問題是,當你從strings.xml中讀取時,你沒有得到HTML標籤。如果你使用cdata,你會*獲得完整的標籤。然後你用這根繩子做什麼取決於你。 *你*仍然想把它放在'Html.fromHtml()'中。是你做的嗎?你能否確切地告訴我你現在得到了什麼樣的行爲? - **編輯**:我看到你編輯了你的文章,非常好(很多人不這樣做,你太棒了!)。所以是的,嘗試'Html.fromHtml()',並請回報如果它的工作:) – Keelan