2011-10-04 21 views
12

比方說,我有這樣的字符串:處理在res的Android動態文本字符串/值

你的球員有一個良好門將技能和體面人技能

現在不是在部分字符串的粗體總是相同的,運行時已知的是粗體部分。

所以我怎麼會做這樣的事情:

你的球員有一個{VAR1}門將技能和{VAR2}人技能

,然後在運行時填補這些VAR提供正確的值?

我不想來連接字符串一樣:

"You player has a" + var1 + "keeper skill and a" + var2 + "people skill" 
+0

''Resources \ getString(resId,...)''或者'Context.getString(resId,...)'''''你的玩家有%1 $ s守護者技能和%2 $ s人技能'''你正在尋找什麼? – Salw

回答

33

你需要看到Android的字符串資源指南。有一種方法可以提供靜態字符串,以後可以用變量格式化。

http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling

您將定義字符串如

<resources> 
    <string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string> 
</resources> 

後來在代碼,你可以在Java中的strings.xml

You player has a %1$d keeper skill and a %2$d people skill 

更換

Resources res = getResources(); 
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount); 
CharSequence styledText = Html.fromHtml(text); 
+0

tnx,你的答案被接受爲鏈接和代碼的完整性。 – dierre

+0

有關在http://developer.android上格式化字符串標記的更多信息。com/reference/java/util/Formatter.html – stackuser83

7
getString(R.string.article_stats, var1, var2); 
4

是的,看到android devguide

下如果需要使用String.format(String, Object...)格式化你的字符串,那麼你可以把你的格式參數的字符串資源這樣做。例如,用下面的資源:

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string> 

在此示例中,格式字符串有兩個參數:%1 $ s是一個字符串和%2 $ d是十進制數。您可以從您的應用程序像這種格式與arguements字符串:

Resources res = getResources(); 
String text = String.format(
    res.getString(R.string.welcome_messages), 
    username, mailCount); 
3

在字符串的XML你在CDATA標籤定義HTML語法像

<![CDATA[<b> %1$s bought </b>, last purchased from %2$s <b> %3$s </b>]]> 

,並在你的java類

String detail = String.format(getString(R.string.detail),15,"New Delhi","23 mins ago"); 
     detailView.setText(Html.fromHtml(detail)); 
+0

試過每個解決方案只有這一個working..cheers – maheshsgr