【问题标题】:Android formatting xml string loses its html tagsAndroid 格式化 xml 字符串会丢失其 html 标签
【发布时间】:2015-03-30 09:54:49
【问题描述】:

我在下面有一个 xml 字符串,其中包含 html 标记,例如粗体和超链接 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);

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

【问题讨论】:

    标签: android html xml string


    【解决方案1】:

    使用Html.fromHtml

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

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

    来自文档:

    有时您可能想要创建一个样式化的文本资源,该资源也是 用作格式字符串。通常,这不起作用,因为 String.format(String, Object...) 方法将剥离所有样式 来自字符串的信息。解决方法是编写 带有转义实体的 HTML 标签,然后用 fromHtml(String),在格式化之后。

    尝试使用&amp;lt;b&gt; 代替&lt;b&gt; 并使用&amp;lt;/b&gt; 代替&lt;/b&gt;

    【讨论】:

    • 您好,我尝试了这种方法,但仍然无法呈现放置在文本上的 html 标签
    • 应该是&amp;lt;a&amp;lt;/a&gt;,不是吗?
    【解决方案2】:

    假设你想要这个

    <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)));
    

    【讨论】:

    • 你是怎么做的,你能发布相同的代码吗?
    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多