Créer un Android Toast personnalisé
View more Tutorials:

Sur Android Studio, créez un nouveau projet:
- File > New > New Project > Empty Activity
- Name: CustomToastExample
- Package name: org.o7planning.customtoastexample
- Language: Java
Copiez une icône (icon_info.png) dans le répertoire drawable du projet.

Dans cet exemple, je vais utiliser le "Resource Layout File" pour concevoir l'interface pour Toast, vous pouvez également créer l'interface pour Toast entièrement avec du code Java (voir plus dans l'exemple).
OK, faites un clic droit sur le dossier "layout" et choisissez:
- New > Layout Resource File

- File name: layout_custom_toast.xml
- Root element: LinearLayout
- Source set: main
- Directory name: layout


Et maintenant, vous pouvez concevoir l'interface de Toast.

Définissez ID, Text, Padding, layout_weight pour les éléments de l'interface:

layout_custom_toast.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:padding="10sp"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:paddingRight="10sp" app:srcCompat="@drawable/icon_info" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="Message" /> </LinearLayout>
L'interface principale de l'application:

activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/button_show" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="32dp" android:text="Show Custom Toast" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package org.o7planning.customtoastexample; import androidx.appcompat.app.AppCompatActivity; import android.graphics.Color; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button buttonShow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.buttonShow = (Button) this.findViewById(R.id.button_show); this.buttonShow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { buttonShowClicked(); } }); } // Create Toast with "Resource Layout File". private void buttonShowClicked() { LayoutInflater inflater = this.getLayoutInflater(); View layout = inflater.inflate(R.layout.layout_custom_toast, null); // TextView in layout_custom_toast. TextView textView = (TextView) layout.findViewById(R.id.textView); textView.setText("This is a message"); textView.setTextColor(Color.BLUE); // Create Toast Toast toast = new Toast(this); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show(); } // Create Toast without "Resource Layout File". private void buttonShowClicked2() { LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.HORIZONTAL); layout.setPadding(10,10, 10, 10); // ImageView imageView = new ImageView(this); imageView.setImageResource(R.drawable.icon_info); imageView.setPadding(0, 0, 10, 0); // TextView textView = new TextView(this); textView.setTextColor(Color.BLUE); textView.setText("This is a message"); LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT,0); layout.addView(imageView, params1); LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT,1); layout.addView(textView, params2); // Create Toast Toast toast = new Toast(this); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show(); } }