Guide complet de l'utilisation des Toast Android

Les différentes méthodes d'utilisation des Toast sous Android

  1. Création d'un Toast basique

Pour créer un toast, on utilise la méthode statique makeText() qui nécessite trois paramètres :

  • Le contexte de l'applicasion (getApplicationContext() ou this)
  • Le message à afficher (soit une chaîne directe, soit un identifiant de ressource R.string)
  • La durée d'affichage (Toast.LENGTH_LONG, Toast.LENGTH_SHORT ou une valeur en millisecondes)
Toast notification = Toast.makeText(getApplicationContext(), "Notification affichée", Toast.LENGTH_SHORT);
notification.show();

Attention : L'appel à la méthode show() est obligatoire pour que le toast soit visible à l'écran.

  1. Personnalisation de la position du Toast

La méthode setGravity() permet de positionner le toast où vous le souhaitez sur l'écran. Elle accepte jusqu'à trois paramètres :

  • Le premier définit l'ancrage (ex: Gravity.CENTER, Gravity.TOP, Gravity.BOTTOM)
  • Le deuxième représente le décalage horizontal (positif vers la droite, négatif vers la gauche)
  • Le troisième correspond au décalage vertical
notification.setGravity(Gravity.TOP | Gravity.CENTER, 0, 150);
notification.show();

Si les valeurs de décalage dépassent les limites de l'écran, le toast s'affichera contre le bord correspondant.

  1. Insertion d'une image dans le Toast

Il est possible d'enrichir un toast en y ajoutant une image. Pour cela, il faut manipuler la vue racine du toast :

Toast toastAvecImage = Toast.makeText(getApplicationContext(), "Toast avec illustration", Toast.LENGTH_LONG);
toastAvecImage.setGravity(Gravity.CENTER, 0, 0);

ImageView vueImage = new ImageView(getApplicationContext());
vueImage.setImageResource(R.drawable.ic_launcher);

LinearLayout vueToast = (LinearLayout) toastAvecImage.getView();
vueToast.setOrientation(LinearLayout.HORIZONTAL);
vueToast.addView(vueImage, 0);

toastAvecImage.show();

  1. Création d'un Toast entièrement personnalisé

Pour un contrôle total sur l'apparence, on peut créer un layout personnalisé via un fichier XML :

LayoutInflater inflateurg = getLayoutInflater();
Vue vuePerso = inflateurg.inflate(R.layout.toast_perso, (ViewGroup) findViewById(R.id.conteneurToast));

ImageView img = (ImageView) vuePerso.findViewById(R.id.imageToast);
img.setImageResource(R.drawable.ic_ custom);

TextView titre = (TextView) vuePerso.findViewById(R.id.titreToast);
titre.setText("Information");

TextView message = (TextView) vuePerso.findViewById(R.id.messageToast);
message.setText("Contenu personnalisé");

Toast toastPerso = new Toast(getApplicationContext());
toastPerso.setGravity(Gravity.CENTER, 0, 0);
toastPerso.setDuration(Toast.LENGTH_LONG);
toastPerso.setView(vuePerso);
toastPerso.show();

  1. Affichage d'un Toast depuis un thread secondaire

Android exige que les manipulations d'interface utilisateur s'effectuent sur le thread principal. Pour afficher un toast depuis un autre thread, on utilise un Handler :

private Handler gestionnaire = new Handler(Looper.getMainLooper());

// Méthode à appeler depuis le thread principal
private void afficherNotification() {
    Toast.makeText(getApplicationContext(), "Toast depuis un thread secondaire", Toast.LENGTH_SHORT).show();
}

// Depuis le thread principal uniquement
gestionnaire.post(new Runnable() {
    @Override
    public void run() {
        afficherNotification();
    }
});

// Alternative avec sendMessage
private Handler handlerUI = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        if (msg.what == 1) {
            afficherNotification();
        }
    }
};

// Depuis le thread secondaire
new Thread(new Runnable() {
    @Override
    public void run() {
        handlerUI.sendEmptyMessage(1);
    }
}).start();

Étiquettes: Android toast Java UI Handler

Publié le 15 juillet à 13h07