Create a custom Android Toast

View more Tutorials:

1- Custom Toast

2- Example of custom Toast

On  Android Studio, create a project:
  • File > New > New Project > Empty Activity
    • Name: CustomToastExample
    • Package name: org.o7planning.customtoastexample
    • Language: Java
Then copy an icon (icon_info.png) into the folder  drawable of the project.
In this example, I'm going to use  "Resource Layout File" to design the  Toast interface. You can also create the  Toast interface only by  Java code (See more in the example).
First, right click on the folder "layout" and select:
  • New > Layout Resource File
  • File name: layout_custom_toast.xml
  • Root element: LinearLayout
  • Source set: main
  • Directory name: layout
Now you can design your  Toast interface.
Next, set  ID, Text, Padding and layout_weight for the components in the 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>
And here is the main interface of the 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();
    }
}

View more Tutorials: