Símbolo de porcentaje en strings.xml
Estoy tratando de dar formato a una cadena de string.xml para reutilizarla con varios valores. Estoy corriendo en algunos problemas como el String también debe contener el símbolo de porcentaje que es utilizado por el formateador. Ya he intentado reemplazar el símbolo% por su presentación unicode pero que no parece funcionar:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="teststring">The new value is %1$s%</string> <string name="teststring2">The new value is %1$s\u0025</string> <string name="teststring3">The new value is %1$s</string> </resources>
Código Java:
- Definición de archivo xml para el botón para cambiar el fondo Y textColor basado en el estado
- ImageView no se extiende (Android)?
- ¿Cajón de la navegación sobre la barra de estado en turrón?
- CollapsingToolbarLayout no reconoce el desplazamiento
- Android crea y escribe xml en un archivo
String value = "25"; String formattedString = context.getResources().getString(R.string.teststring), value);
En este ejemplo. Teststring y teststring2 producirán un error, mientras que teststring3 funcionará bien. ¿Cuál es la manera correcta de poner ese símbolo% en la cadena xml para obtener "El nuevo valor es 25%" como formato String?
Gracias por tu ayuda.
Stacktrace:
FATAL EXCEPTION: main java.util.UnknownFormatConversionException: Conversion: at java.util.Formatter$FormatSpecifierParser.unknownFormatConversionException(Formatter.java:2304) at java.util.Formatter$FormatSpecifierParser.advance(Formatter.java:2298) at java.util.Formatter$FormatSpecifierParser.parseConversionType(Formatter.java:2377) at java.util.Formatter$FormatSpecifierParser.parseArgumentIndexAndFlags(Formatter.java:2348) at java.util.Formatter$FormatSpecifierParser.parseFormatToken(Formatter.java:2281) at java.util.Formatter.doFormat(Formatter.java:1069) at java.util.Formatter.format(Formatter.java:1040) at java.util.Formatter.format(Formatter.java:1009) at java.lang.String.format(String.java:1988) at android.content.res.Resources.getString(Resources.java:343) at (... and so on)
– EDIT– Gracias por la ayuda. La respuesta correcta es
<string name="teststring">The new value if %1$s%%</string>
Formatted = "false" no se debe establecer.
- Notificación personalizada de Android que no muestra cambios de código
- Cómo rellenar una vista de cuadrícula en XML
- Android añadiendo pie de página a ListView addFooterView ()?
- Android - Centro de vista de texto en LinearLayout
- ¿Existe una clase integrada de Android para crear XML de forma no continua?
- Obtener atributos con estilo para el niño de la definición de estilo de los padres
- Android XmlPullParser UTF-8 problema
- Android TextView DrawableTint en dispositivos pre v23
Utilizar
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="teststring">The new value is %1$s%%</string> </resources>
En java
String value = "25"; String formattedString =String.format(getResources().getString(R.string.teststring), value); Log.i("",formattedString);
¿Puedes intentar \%%
lugar de% ??
Me gusta,
<string name="teststring">The new value is \%%</string>
O
<string formatted="false" name="teststring" >The new value is %</string>
Prueba esto
<string name="teststring"> The new value is %1$s %% </string>
String value = "25"; String formattedString = "The new value is " + value + (char) 0x0025;
Si ahora Log.d (TAG, formattedString); Se registrará
The new value is 25%
Utilizar de esta manera:
String str = context.getResources().getString(R.string.teststring); String formattedString = String.format(str, value);
Revisa este,
<string name="teststring">The new value is %1$s %%</string> String value = "25"; String formattedString = this.getResources().getString(R.string.teststring, mPageNumber);
- Elementos compartidos que animan entre fragmentos
- Modificación de la imagen de recurso de la barra de progreso