2011-11-20 97 views
9

我试图将一个静态的“硬编码”字符串与strings.xml中引用的一个字符串数组项相结合。如何连接带有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

http://stackoverflow.com/a/2865276/1085128似乎表明,它至少几乎成为可能。可能甚至完全可能。 – mako

+0

通过定义一个XML实体是可能的。我用这个答案:http://stackoverflow.com/questions/3656371/dynamic-string-using-string-xml/24903097#24903097 – Andrew

回答

6

对不起,Android资源文件不支持此类语法。

+0

如果是这样,这很难过,我猜我必须将数字移动到字符串。 xml也是如此。 –

+0

使用XML实体可以在Android xml文件(如strings.xml)中多次引用相同的字符串。请参阅下面的答案。 – Andrew

-1

否则会有这种效果排序的方式,用一个占位符定义字符串资源,并在代码中使用的getResourses().getString()String.format()风格超载背后:

在string.xml

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

在activity_layout.xml

<TextView android:id="@+id/secs_label" /> 

在TheActivity.java

((TextView)findViewByID(R.id.secs_label)).setText(getResources().getString(R.string.secs, 25)); 
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?