Создание пользовательских Android Toast
View more Tutorials:

На Android Studio создайте новый project:
- File > New > New Project > Empty Activity
- Name: CustomToastExample
- Package name: org.o7planning.customtoastexample
- Language: Java
Скопируйте иконку (icon_info.png) в папку drawable у project.

В данном примере я использую "Resource Layout File", чтобы сделать дизайн интерфейса для Toast, вы так же можете создать интерфейс для Toast только Java кодом(Смотрите больше в примере).
OK, нажмите на правую кнопку мыши на папку "layout" и выберите:
- New > Layout Resource File

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


И теперь вы можете сделать дизайн интерфейса для Toast.

Настроить ID, Text, Padding, layout_weight для компонентов на интерфейсе:

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>
Основной интерфейс приложения:

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(); } }