Toast adalah komponen yang digunakan untuk menampilkan pesan singkat yang biasanya bersifat pemberitahuan kepada user mengenai kegiatan yang baru saja dilakukan. Ukuran toast akan menyesuaikan dengan ukuran panjang pesan yang ditampilkan. Toast akan hilang dengan sendirinya setelah beberapa detik. Komponen toast ini juga tidak bisa menerima input dari user (user tidak bisa mengklik toast).
Untuk membuat toast, kita bisa menggunakan method ‘makeText()’ dari class Toast ini.
public static Toast makeText (Context context, int resId, int duration)
public static Toast makeText (Context context, CharSequence text, int duration)
Method tersebut akan mengembalikan object toast, dimana kita bisa memanggil method ‘show()’ di object toast tersebut untuk menampilkannya.
Toast.makeText(this, "Default Toast", Toast.LENGTH_SHORT).show()
Pada contoh di atas kita membuat object toast dengan ‘this’ sebagai context (‘this’ disini adalah activity), “Default Toast” adalah pesan yang akan ditampilkan, Toast.LENGTH_SHORT adalah durasi toast ini. Di bagian akhir kita memanggil method ‘show()’ untuk menampilkan toast yang telah dibuat.
Untuk mengubah posisi toast, kita bisa menggunakan method ‘setGravity()’.
public void setGravity (int gravity, int xOffset, int yOffset)
Parameter pertama method ini adalah nilai gravity yang ingin digunakan. Kita bisa menggunakan nilai-nilai yang sudah disediakan:
- Gravity.TOP
- Gravity.RIGHT
- Gravity.BOTTOM
- Gravity.LEFT
Parameter kedua (xOffset) digunakan untuk mengatur posisi horizontal dari toast. Nilai negatif akan membuat toast bergeser ke kiri, sedangkan nilai positif akan membuat toast bergeser ke kanan.
Parameter ketiga (yOffset) digunakan untuk mengatur posisi vertikal dari toast. Nilai negatif akan membuat toast bergeser ke atas, sedangkan nilai positif akan membuat toast bergeser ke bawah.
Toast.makeText(this, "Top Toast", Toast.LENGTH_SHORT).apply {
setGravity(Gravity.TOP, 0, 256)
show()
}
Selain itu kita juga bisa menggunakan desain custom untuk toast. Pertama kita perlu membuat layout yang akan digunakan. Kemudian kita akan memanggil layout tersebut (inflate) dan kemudian menggunakannya ketika membuat objek toast dengan menggunakan method ‘setView()’.
public void setView (View view)
Pertama buat file layout dengan nama ‘custom_toast.xml’. Dan juga berikan ID untuk viewgroup paling atas di layout ini. ID ini akan digunakan untuk proses inflate layout.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container_custom_toast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray"
android:orientation="horizontal">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:src="@drawable/ic_launcher_background" />
<TextView
android:id="@+id/tv_toast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp" />
</LinearLayout>
Kemudian inflate layout ini ketika membuat objek toast, dan panggil method ‘setView()’ dengan layout ini sebagai argumen.
val layout = layoutInflater.inflate(
R.layout.custom_toast,
container_custom_toast
).apply { tv_toast.text = "Custom Toast" }
Toast(this).apply {
duration = Toast.LENGTH_SHORT
view = layout
show()
}
Perlu diingat jika kita menggunakan custom layout untuk toast, maka kita tidak bisa menggunakan method ‘makeText()’. Kita harus membuat objek toast dengan memanggil constructor nya.
Yuuup, kira-kira seperti itu cara menggunakan toast. Thanks!
Source code: https://github.com/bonioctavianus/android-toast-example
Reference: https://developer.android.com/guide/topics/ui/notifiers/toasts