1

由于字符串资源中使用了 HTML,我无法将其从字符序列转换为字符串(否则我将丢失格式)。

<string name="exponent_key">x<sup><small>y</small></sup>/string>

使用后,getString()我想用“其他东西”替换“y”,但你是怎么做到的?这似乎是一个简单的问题,但由于某种原因,我找不到任何关于它的信息。

编辑:现在我考虑一下,我可以将字符序列转换为包含 HTML 代码的字符串,然后再将其转换回字符序列吗?

编辑:忘了提到字符串被设置为按钮标题,然后被检索(然后使用它)。

4

4 回答 4

0

让我们分多个步骤分解您的问题:

  • 用“其他东西”替换 y 可以这样完成:

    String.format("%1$", "otherStuff");
    
  • 如果你使用 getString(),你可以做同样的事情:

    <string name="exponent_key">%1$</string>
    
    ---
    
    String string = getString(R.string.exponent_key, "otherStuff");
    
  • 对于多个元素,请这样做:您可以这样做:

    <string name="string_name">%1$ : %2$</string>
    
    ---
    
    getString(R.string.string_name, new String[]{"hello", "world"});
    
  • 在 XML 中,您不能嵌套 HTML 代码,因为 HTML 是另一种类型的 XML,解析器会搞砸,无法识别哪些标签适用于 Android,哪些标签适用于 HTML。但是..有一个窍门。你可以这样做:

    <string name="exponent_key"><![CDATA[x<sup><small>%1$</small>/sup>]]></string>
    
  • 因此,在您的 XML 中使用上面的字符串,只需使用就可以了:

    getString(R.string.exponent_key, "otherStuff");
    
  • 注意:如果您需要在 TextView 中显示 HTML,只需使用 Html.fromHtml:

    textView.setText(Html.fromHtml(getString(R.string.exponent_key, "otherStuff")));
    
于 2015-08-24T08:42:14.923 回答
0

有。创建一个函数,其中作为参数,您需要一个需要格式化的字符串。在函数中,你只需通过迭代器,然后 Html.fromHtml()

于 2015-08-24T08:39:38.617 回答
0

考虑你想要达到的效果。你可以这样做。

 SpannableString ss = new SpannableString("2");
        // set superscript
        ss.setSpan(new SuperscriptSpan(),0,ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        // set font size
        ss.setSpan(new AbsoluteSizeSpan(12,true),0,ss.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv.append(ss);
于 2015-08-24T09:34:23.520 回答
0

在你的 string.xml

<string name="exponent_key">x<sup><small>%1$d</small></sup></string>

在你的代码中

textView.setText(getString(R.string.exponent_key,2))
于 2015-08-24T08:57:38.583 回答