¿Cómo puedo utilizar estilos html en cadenas con argumentos de formato?
En mi aplicación, me gustaría definir una cadena de formato en strings.xml que tenga este aspecto (observe las etiquetas <b>...</b>
):
<string name="location"><b>Location:</b> %1$s</string>
Y luego use getString (int, Object …) para sustituir en un argumento de formato:
- No se puede tomar la captura de pantalla en android utilizando robotium y método privado
- ¿Subir varias imágenes con volley?
- Android GPS tarda un tiempo en ser preciso
- Android - Acceso a la base de datos en línea SQlite
- ¿No se puede crear el archivo MDS Hash?
String formattedString = getString(R.string.location, "Edmonton, AB");
Esto produce un valor de "Location: Edmonton, AB"
. Me gustaría obtener un valor de "<b>Location:</b> Edmonton, AB"
.
¿Hay alguna manera de hacer esto usando formatos de cadena en strings.xml sin dividirlo en dos cadenas?
- Campos de encabezado de respuesta HTTP de Volley de acceso de Android
- Error: la CPU no admite las funciones necesarias (vt-x o svm)
- Creación de GoogleApiClient para múltiples actividades
- La actividad se bloquea en setAdapter (ArrayAdapter);
- Cómo agregar fuente de 'Android Private Libraries' a ADT eclipse?
- Recursos de Android $ NotFoundException
- Widget de la pestaña siempre en los alfabetos de mayúsculas en Android 4.0
- ¿Cómo establezco correctamente un punto de interrupción de excepción en Android Studio?
De los documentos :
A veces es posible que desee crear un recurso de texto con estilo que también se utilice como una cadena de formato. Normalmente, esto no funcionará porque el método String.format (String, Object …) quitará toda la información de estilo de la cadena. El trabajo en torno a esto es escribir las etiquetas HTML con entidades de escape, que luego se recuperan con fromHtml (String), después de que el formato se lleva a cabo.
Por ejemplo:
<resources> <string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string> </resources>
Asegúrese de escapar del texto que está pasando en String.format()
String escapedUsername = TextUtils.htmlEncode(username); Resources res = getResources(); String text = String.format(res.getString(R.string.welcome_messages), escapedUsername, mailCount); CharSequence styledText = Html.fromHtml(text);
Utilice String.Format. p.ej
<string name="location"><![CDATA[<b>Location:</b> %s]]></string> String formattedString = String.Format(getString(R.string.location), "Edmonton, AB");
- Evitar que Proguard elimine elementos estirables específicos
- Cómo emular una etiqueta nfc en un teléfono Android