Android格式化xml字符串丢失其html标记

时间:2015-03-30 09:54:49

标签: android html xml string

我的下面有一个xml字符串,其中包含html标签,例如Bold和超链接href。

<string name"example"><b>%1$s</b> has been added to your clipboard  and is valid until  <b>%2$s</b><a href="http://www.google.com">Please see our +T\'s and C\'s+ </a>   </string>

当我格式化字符串以动态添加一些值时,它会删除粗体文本和我定义的href。

以下代码:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yy");
Date date = new Date(text.getValidTo()); 
String text = String.format(getString(R.string_dialog_text), text.getCode(), simpleDateFormat.format(date), "£30");

然后我将其应用于警告对话框

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setNeutralButton(R.string.ok, onClickListener);
builder.setTitle(title);
builder.setMessage(text);

如果我不格式化文本并直接使用字符串资源

,这工作正常

2 个答案:

答案 0 :(得分:6)

使用Html.fromHtml

builder.setMessage(Html.fromHtml(text));

当您应用格式时,CharSequence会转换回String,您需要带有html信息的Spannable

来自doc:

  

有时您可能想要创建一个样式化的文本资源   用作格式字符串。通常情况下,这不起作用,因为   String.format(String,Object ...)方法将删除所有样式   来自字符串的信息。解决这个问题的方法就是编写   带有转义实体的HTML标记,然后使用   格式化后,fromHtml(String)。

尝试使用&lt;b>代替<b>&lt;/b>到位</b>

答案 1 :(得分:0)

假设你想要这个

<resources>
<string name="our_string_key">
    <B>Title</B> <I>Italic</I><BR/>
    Content
</string>
</resources>

然后在那种情况下,你将它用作

textview.setText(Html.fromHtml(R.String.our_string_key));

如果您收到错误,可以将其用作

   textview.setText(Html.fromHtml(getResources().getString(R.String.our_string_key)));