如何将静态字符串与XML字符串资源连接起来?

时间:2011-11-20 18:07:36

标签: android xml reference preferences arrays

我正在尝试将一个静态“硬编码”字符串与一个从strings.xml引用的字符串组合用于字符串数组项。

目标是拥有一个动态指标列表,其中所有语言的数字都相同,但指标文本值可能会按语言更改,如下所示:

<string-array name="interval_labels">
    <item>30 @string/second</item>
    <item>1 @string/minute</item>
    <item>5 @string/minute</item>
    <item>10 @string/minute</item>
    <item>15 @string/minute</item>
    <item>30 @string/minute</item>
    <item>60 @string/minute</item>
</string-array>

现在,如果我在@string/...引用之前删除了数字,它运行良好(如上所述here),但我想知道是否有办法检索引用的字符串并将其连接起来到“硬编码”的那个。

3 个答案:

答案 0 :(得分:6)

抱歉,Android资源文件不支持此类语法。

答案 1 :(得分:1)

使用XML实体是可能的。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
  <!ENTITY mintues "minutes">
  <!ENTITY minute "minute">
  <!ENTITY seconds "seconds">
]>

<resources>
  <string-array name="interval_labels">
    <item>30 &seconds;</item>
    <item>1 &minute;/item>
    <item>5 &minutes;</item>
    <item>10 &minutes;</item>
    <item>15 &minutes;</item>
    <item>30 &minutes;</item>
    <item>60 &minutes;</item>
  </string-array>
</resources>

我使用了这个答案:dynamic String using String.xml?

答案 2 :(得分:-1)

通过使用占位符定义字符串资源并在后面的代码中使用String.format()样式重载{/ 1}},有一种方法可以获得此效果:

在string.xml中

getResourses().getString()

在activity_layout.xml

<string name="secs">%1$d seconds</string>

在TheActivity.java中

<TextView android:id="@+id/secs_label" />
相关问题