This article is about Android Toast and how to use it in android application with simple examples using Java and Kotlin.
Toast
A toast provides simple feedback about an operation in a small popup.
By default it appears near the bottom of the screen, centered horizontally.
Toasts are not clickable and automatically disappear after a timeout.
Simple Toast
The below code snippet is an example of Simple Toast
//get Toast object Toast toast = Toast.makeText(getApplicationContext(), "Simple Toast", Toast.LENGTH_LONG); toast.show(); //show Toast
The makeText method (makes a standard toast) takes three parameters:
Context : The context to use (Application or Activity object).
CharSequence: The text to show on Toast.
Duration : How long to display the message. It can be LENGTH_SHORT and LENGTH_LONG.
- LENGTH_SHORT: Show the Toast for a short period of time.
- LENGTH_LONG: Show the Toast for a long period of time.
show(): Used to display the Toast on the screen.

Positioned Toast
Android Toast allows you to change the position of the Toast using the setGravity() method.
setGravity method accepts three parameters: a Gravity constant, an x-position offset, and a y-position offset.
For example, if you want the toast to appear at 400 distance(y-position) from the top-center, you can show the toast with gravity like this:
//get Toast object Toast toast = Toast.makeText(getApplicationContext(), "Positioned Toast ", Toast.LENGTH_SHORT); //set toast gravity toast.setGravity(Gravity.CENTER | Gravity.TOP, 0, 400); //show toast toast.show();

Custom Toast
Android Toast allows you to create a customized layout for your Toast.
To create a custom layout, define a View layout, in XML. The following snippet contains a customized layout for Toast (saved as layout/custom_toast.xml):
custom_toast.xml
<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:id="@+id/custom_toast_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/toast_background"
android:padding="@dimen/padding_12dp">
<ImageView
android:id="@+id/toast_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/toast_text"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginRight="@dimen/margin_10dp"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@android:drawable/stat_sys_phone_call_on_hold" />
<TextView
android:id="@+id/toast_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/custom_toast_text"
android:textColor="@android:color/black"
android:textSize="@dimen/textsize_15sp"
app:layout_constraintBottom_toBottomOf="@+id/toast_img"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/toast_img"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
You must use the ID of the ConstraintLayout element (“custom_toast_container“) and the ID of the XML layout file “custom_toast.xml” to inflate the layout as shown here:
//get View object (using custom layout, created for Toast)
View layout = getLayoutInflater().inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.custom_toast_container));
Now pass this View object to the setView() method.
Toast toast = new Toast(getApplicationContext()); //get Toast object toast.setDuration(Toast.LENGTH_LONG); //set Toast duration toast.setGravity(Gravity.CENTER | Gravity.BOTTOM, 0, 300); //set Toast gravity toast.setView(layout); //set View object toast.show(); //show Toast

Creating New Project
1. In Android Studio, go to File ⇒ New Project, fill all the details required to create a new project and then click on finish.
2. Rename the layout file activity_main.xml as activity_toast.xml and add the below code. This layout file consist of three buttons, SIMPLE TOAST (To show Android standard toast), POSITIONED TOAST (To show toast at specific position), CUSTOM TOAST (To show toast with custom view).
activity_toast.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"
android:layout_margin="@dimen/margin_20dp"
tools:context=".ToastActivityKotlin">
<Button
android:id="@+id/btn_simple_toast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btn_simple_toast"
android:padding="@dimen/padding_12dp"
app:layout_constraintBottom_toTopOf="@+id/btn_positioned_toast"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<Button
android:id="@+id/btn_positioned_toast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_10dp"
android:layout_marginBottom="@dimen/margin_10dp"
android:text="@string/btn_positioned_toast"
android:padding="@dimen/padding_12dp"
app:layout_constraintBottom_toTopOf="@+id/btn_custom_toast"
app:layout_constraintEnd_toEndOf="@+id/btn_simple_toast"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@+id/btn_simple_toast"
app:layout_constraintTop_toBottomOf="@+id/btn_simple_toast" />
<Button
android:id="@+id/btn_custom_toast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btn_custom_toast"
android:padding="@dimen/padding_12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/btn_positioned_toast"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="@+id/btn_positioned_toast"
app:layout_constraintTop_toBottomOf="@+id/btn_positioned_toast" />
</androidx.constraintlayout.widget.ConstraintLayout>
3. Create a new layout file custom_toast.xml (layout->New->Layout Resource File) and add the below code. This layout file represents the custom layout of toast.
custom_toast.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:id="@+id/custom_toast_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/toast_background"
android:padding="@dimen/padding_12dp">
<ImageView
android:id="@+id/toast_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/toast_text"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginRight="@dimen/margin_10dp"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@android:drawable/stat_sys_phone_call_on_hold" />
<TextView
android:id="@+id/toast_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/custom_toast_text"
android:textColor="@android:color/black"
android:textSize="@dimen/textsize_15sp"
app:layout_constraintBottom_toBottomOf="@+id/toast_img"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/toast_img"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Complete code in Java
Below activity contains three buttons with click listener to show the different ways of implementing the toast in Java.
SnackbarActivityJava.java
package com.c1ctech.androidtoastdemo;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class ToastActivityJava extends AppCompatActivity implements View.OnClickListener {
private Button btnSimpleToast, btnPositionedToast, btnCustomToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_toast);
//get buttons by its id
btnSimpleToast = findViewById(R.id.btn_simple_toast);
btnPositionedToast = findViewById(R.id.btn_positioned_toast);
btnCustomToast = findViewById(R.id.btn_custom_toast);
//set click listener on buttons
btnSimpleToast.setOnClickListener(this);
btnPositionedToast.setOnClickListener(this);
btnCustomToast.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.btn_simple_toast:
//show simple toast
Toast.makeText(getApplicationContext(), "Simple Toast", Toast.LENGTH_LONG).show();
break;
case R.id.btn_positioned_toast:
//get Toast object
Toast toast = Toast.makeText(getApplicationContext(), "Positioned Toast ", Toast.LENGTH_SHORT);
//set toast gravity
toast.setGravity(Gravity.CENTER | Gravity.TOP, 0, 400);
//show toast
toast.show();
break;
case R.id.btn_custom_toast:
//get View object (using custom layout, created for Toast)
View layout = getLayoutInflater().inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.custom_toast_container));
//get TextView from View object
TextView text = layout.findViewById(R.id.toast_text);
//set text in textview
text.setText("Your phone call is on hold");
toast = new Toast(getApplicationContext()); //get Toast object
toast.setDuration(Toast.LENGTH_LONG); //set Toast duration
toast.setGravity(Gravity.CENTER | Gravity.BOTTOM, 0, 300); //set Toast gravity
toast.setView(layout); //set View object
toast.show(); //show Toast
break;
}
}
}
When you run the application it will look like this:

Complete code in Kotlin
Create a new activity SnackbarActivityKotlin.kt (New->Activity->Empty Activity->select language kotlin) and then click on finish. This activity contains three buttons with click listener to show the different ways of implementing the toast in Kotlin.
SnackbarActivityKotlin.kt
package com.c1ctech.androidtoastdemo
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
class ToastActivityKotlin : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_toast)
//get buttons by its id
val btnSimpleToast = findViewById<Button>(R.id.btn_simple_toast)
val btnPositionedToast = findViewById<Button>(R.id.btn_positioned_toast)
val btnCustomToast = findViewById<Button>(R.id.btn_custom_toast)
//set click listener on buttons
btnSimpleToast.setOnClickListener(this)
btnPositionedToast.setOnClickListener(this)
btnCustomToast.setOnClickListener(this)
}
override fun onClick(view: View) {
val id = view.id
when (id) {
//show simple toast
R.id.btn_simple_toast -> Toast.makeText(applicationContext, "Simple Toast", Toast.LENGTH_LONG).show()
R.id.btn_positioned_toast -> {
//get Toast object
val toast = Toast.makeText(applicationContext, "Positioned Toast ", Toast.LENGTH_SHORT)
//set Toast gravity
toast.setGravity(Gravity.CENTER or Gravity.TOP, 0, 400)
//show Toast
toast.show()
}
R.id.btn_custom_toast -> {
//get View object (using custom layout, created for Toast)
val layout = layoutInflater.inflate(R.layout.custom_toast, findViewById(R.id.custom_toast_container) as? ViewGroup)
//get TextView from View object
val text = layout.findViewById<TextView>(R.id.toast_text)
//set text in textview
text.text = getText(R.string.custom_toast_text) //text.setText("Your phone call is on hold")
val toast = Toast(applicationContext) //get Toast object
toast.duration = Toast.LENGTH_LONG //set Toast duration
toast.setGravity(Gravity.CENTER or Gravity.BOTTOM, 0, 300) //set Toast gravity
//set View object
toast.view = layout //toast.setView(layout)
toast.show() //show Toast
}
}
}
}
