2011-10-04 11 views
12

Diciamo che ho questa stringa:Handling Android stringa di testo dinamico nella res/valori

Il lettore ha una buona abilità custode e un decenti persone abilità

Ora la parte non in il grassetto della stringa è sempre lo stesso, ciò che è noto al runtime è la parte in grassetto.

Quindi, come potrei fare qualcosa di simile:

Il lettore ha un {var1} custode abilità e un'abilità {VAR 2} persone

e poi riempire quelle Vars in fase di esecuzione con giusti valori?

Non voglio per concatenare le stringhe come:

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

'Resources.getString (resId, ...)' o 'Context.getString (resId, ...)' con una stringa come '" Il giocatore ha un'abilità custode di% 1 $ s e un'abilità% 2 $ s per le persone "' è quello che stai cercando? – Salw

risposta

33

avete bisogno di vedere Android guida risorsa di tipo stringa. C'è un modo per fornire una stringa statica che può essere successivamente formattata con variabili.

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

Sarà definire stringa come

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

E più avanti nel codice è possibile sostituire

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

tnx, la tua risposta è stata accettata per completezza nei link e nel codice. – dierre

+0

maggiori informazioni sulla formattazione dei token stringa su http://developer.android.it/reference/java/util/Formatter.html – stackuser83

7

in strings.xml

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

in java

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

Sì, vedere il seguente da android devguide

Se è necessario formattare le stringhe utilizzando String.format(String, Object...), allora si può fare in modo da mettere le argomentazioni formato nella risorsa di stringa. Ad esempio, con la seguente risorsa:

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

In questo esempio, la stringa di formato ha due argomenti:% 1 $ s è una stringa e% 2 $ d è un numero decimale. È possibile formattare la stringa con arguements dalla vostra applicazione in questo modo:

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

nelle stringhe XML è necessario definire la sintassi HTML in tag CDATA come

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

e nella vostra classe Java

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

Provato ogni soluzione disponibile solo questa ha funzionato ... – maheshsgr