我正在尝试将一个静态“硬编码”字符串与一个从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),但我想知道是否有办法检索引用的字符串并将其连接起来到“硬编码”的那个。
答案 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" />