Cómo añadir plurales o diferentes textos para una determinada cantidad en Android Studio usando Java (Usando recursos de texto)

Tiempo de lectura: 2 minutos

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!

Deja un comentario