gpt4 book ai didi

android - 在 AlertDialog.Builder 中格式化文本

转载 作者:搜寻专家 更新时间:2023-11-01 07:54:29 27 4
gpt4 key购买 nike

我无法让 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();

字符串.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());

编辑 2:-------------------------------------------- --------------
我已经按照 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);

这有效。

最佳答案

You can't simply store HTML in a strings.xml file.您需要将它们放入 CDATA 中,如下所示:

<string name="id"><![CDATA[<i>Id: </i>]]></string>

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

关于android - 在 AlertDialog.Builder 中格式化文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085747/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com