2011-11-20 28 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エンティティを使用すると、strings.xmlなどのAndroid 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?

関連する問題