2015-04-15 6 views
5

Ho un compito personalizzato nel mio build.gradle che genera alcune risorse di tipo stringa:Generare una risorsa di stringa che contiene% da build.gradle con resValue

android.defaultConfig.resValue "string", "my_string", "Some Value" 

Questo tutto funziona benissimo: le corde vengono visualizzati correttamente in generated.xml e sono accessibili tramite getResources().getString(R.id.my_string) nel codice dell'applicazione.

Non funziona quando una delle stringhe contiene un simbolo %. Si dà questo errore:

Error:(1) Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?

Ho capito da Android XML Percent Symbol che si sarebbe normalmente ovviare a questo, per una risorsa di stringa in strings.xml, fornendo il formatted="false" attributo aggiuntivo come segue:

<string formatted="false">My string with a % symbol</string> 

Come posso includere l'attributo formatted="false" quando la stringa viene generata utilizzando resValue nello script di compilazione?

(Ho anche cercato di fuggire con il doppio% come suggerito, ma che si traduce in %% che compare nella stringa finale.)

risposta

0

ho risolto sostituendo il simbolo % crudo con un valore doppio escape Unicode al momento della generazione della stringa nel compito Gradle.

android.defaultConfig.resValue "string", "my_string", \ 
    "String with a % symbol".replaceAll("%","\\\\u0025") 
0

È possibile utilizzare% in xml

provare questo formato \ %% in il tuo xml

<string name="foo">percent symbol 50\%% </string> 
Problemi correlati