En primer lugar, vamos a definir los mensajes de plural en el archivo strings.xml
, ubicado en la carpeta res/values/
. Este archivo, contiene los recursos de texto utilizados en la aplicación.
En este caso como ejemplo, vamos a mostrar un texto diferente según el número de mensajes que tengamos.
En el texto plural item quantity=»other» para añadir el número, se usa %d, indicando que ese valor del texto va a ser sustituido por un número entero.
En los recursos plurales de Android, además de %d
, hay otros marcadores de posición que se pueden utilizar para dar formato a las cadenas de texto basadas en la cantidad de elementos. Algunos de estos marcadores son:
%d
: Se utiliza para representar valores enteros.%f
: Representa valores de punto flotante (números decimales).%s
: Representa cadenas de texto.%c
: Se usa para caracteres individuales.%b
o%B
: Representa valores booleanos.%x
: Muestra números en formato hexadecimal.%o
: Muestra números en formato octal.
<resources> <string name="app_name">MiApp</string> <!-- Establecemos los texto para el plural de los mensajes--> <plurals name="mensajedevcodelight"> <item quantity="one">Tienes un mensaje</item> <item quantity="other">Tienes %d mensajes</item> </plurals> </resources>
En el diseño XML (activity_main.xml
), creamos la interfaz de usuario, en este caso, simplemente creamos un TextView
dónde se mostrará el texto con el número de mensajes como a continuación podemos observar.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- TextView para mostrar el mensaje de los mensajes no leídos --> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="18sp" android:layout_centerInParent="true" /> </RelativeLayout>
En el código de la actividad (MainActivity.java
, por ejemplo), obtenemos la cantidad de mensajes no leídos y actualizamos el texto del TextView
import android.os.Bundle; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Obtén la cantidad de mensajes (aquí se simula un valor) int numMessages = 5; // Accede al recurso plural desde el código String messagesString = getResources().getQuantityString(R.plurals.mensajedevcodelight, numMessages, numMessages); // Muestra el texto en un TextView TextView textView = findViewById(R.id.textView); textView.setText(messagesString); } }
Por último muestro el resultado del ejemplo anterior.
Espero que les sirva de ayuda. ¡Que tengan un feliz día!