2015-04-15 13 views
5

Mam zadanie niestandardowe w moim build.gradle który generuje pewne zasoby wyrażenie:Generowanie zasobu ciąg zawierający% od build.gradle z resValue

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

To wszystko działa prawidłowo: struny są wyświetlane poprawnie w generated.xml i są dostępne za pośrednictwem getResources().getString(R.id.my_string) w kodzie aplikacji.

Nie działa, gdy jeden z ciągów zawiera symbol %. Daje ten błąd:

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

rozumiem z Android XML Percent Symbol które normalnie obejść ten problem, dla zasobu string w strings.xml, dostarczając dodatkowej formatted="false" atrybut następująco:

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

Jak dołączyć atrybut formatted="false", gdy łańcuch jest generowany przy użyciu resValue w skrypcie budowania?

(Próbowałem również ucieczki z podwójnie% jak sugeruje, ale to powoduje %% pojawiające się w ostatnim ciągiem.)

Odpowiedz

0

Rozwiązałem go zastępując surowego % symbol z podwójną zmianą wartości unicode w momencie generowania ciąg w Gradle zadania.

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

Można użyć% w xml

spróbować tego formatu \ %% w Twój xml

<string name="foo">percent symbol 50\%% </string> 
Powiązane problemy