Toast در اندروید
در طراحی اپلیکیشنهای اندرویدی، گاهی نیاز داریم پیامی کوتاه و موقت به کاربر نمایش دهیم؛ مثلاً وقتی دادهای ذخیره میشود یا یک خطای ساده رخ میدهد. در چنین مواقعی از Toast استفاده میکنیم.
Toast یک پیام سبک، موقت و غیرتعاملی است که در پایین یا میانهی صفحه ظاهر میشود و بعد از چند ثانیه ناپدید میشود.
در واقع، Toast یکی از سادهترین روشها برای اطلاعرسانی به کاربر بدون مزاحمت در جریان کار با اپلیکیشن است.
Toast در اندروید چیست؟
در اندروید، Toast یک کامپوننت UI (رابط کاربری) است که پیامهای کوتاه را در صفحه بهصورت موقت نمایش میدهد.
کاربر نمیتواند با Toast تعامل داشته باشد و نیازی به تأیید یا بستن آن ندارد.
برای مثال، فرض کنید کاربر دکمهی “ذخیره” را میفشارد؛ میتوان با یک Toast ساده پیغام زیر را نمایش داد:
دادهها با موفقیت ذخیره شدند ✅
نحوه ساخت یک Toast ساده
در اندروید استودیو، ساخت Toast بسیار ساده است. با استفاده از متد makeText() میتوان پیام دلخواه را ایجاد کرد و با show() آن را نمایش داد.
مثال:
Toast.makeText(context, "سلام! این یک Toast ساده است", Toast.LENGTH_SHORT).show();
🔹 توضیح پارامترها:
-
context: معمولاً همان Activity فعلی است. -
"سلام! ...": متن پیام. -
Toast.LENGTH_SHORTیاToast.LENGTH_LONG: مدت زمان نمایش Toast.
مدت زمان نمایش Toast
Toast بهصورت پیشفرض دو زمان نمایش دارد:
-
Toast.LENGTH_SHORT→ حدود ۲ ثانیه -
Toast.LENGTH_LONG→ حدود ۳.۵ ثانیه
اگر بخواهید مدت نمایش را سفارشی کنید، میتوانید از Handler یا Custom Toast استفاده کنید (در ادامه توضیح داده میشود).

مکان نمایش Toast
بهصورت پیشفرض، Toast در پایین صفحه ظاهر میشود. اما میتوانید با استفاده از متد setGravity() موقعیت آن را تغییر دهید:
Toast toast = Toast.makeText(context, "پیام در وسط صفحه", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
🔸 در این مثال، پیام Toast در وسط صفحه نمایش داده میشود.
میتوانید از مقادیر دیگری مانند Gravity.TOP, Gravity.BOTTOM, Gravity.RIGHT, Gravity.LEFT نیز استفاده کنید.
ساخت Toast سفارشی (Custom Toast)
اگر بخواهید ظاهر Toast را شخصیسازی کنید، میتوانید از یک فایل Layout XML اختصاصی استفاده کنید.
۱. ابتدا یک فایل Layout بسازید (مثلاً custom_toast.xml):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:padding="12dp"
android:background="@drawable/bg_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:src="@drawable/ic_check"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="8dp"/>
<TextView
android:id="@+id/toast_text"
android:text="عملیات موفق بود"
android:textColor="@android:color/white"
android:textSize="16sp"/>
</LinearLayout>
۲. سپس در Activity آن را فراخوانی کنید:
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast, null);
Toast toast = new Toast(getApplicationContext());
toast.setView(layout);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
🔹 با این روش، میتوانید Toastهایی با رنگ، آیکون و فونت سفارشی ایجاد کنید.
Toast با ViewBinding در Kotlin
در پروژههای جدید اندروید، بسیاری از توسعهدهندگان از Kotlin + ViewBinding استفاده میکنند. نمونهی زیر، نحوه ساخت Toast با Kotlin را نشان میدهد:
val toast = Toast.makeText(this, "ثبت با موفقیت انجام شد", Toast.LENGTH_SHORT)
toast.setGravity(Gravity.CENTER, 0, 0)
toast.show()
و برای Toast سفارشی:
val binding = CustomToastBinding.inflate(layoutInflater)
binding.toastText.text = "موفقیتآمیز!"
val toast = Toast(applicationContext)
toast.view = binding.root
toast.duration = Toast.LENGTH_LONG
toast.show()
نمایش Toast در Fragment
نمایش Toast در Fragment نیز مشابه Activity است. فقط باید از requireContext() استفاده کنید:
Toast.makeText(requireContext(), "در Fragment هستیم!", Toast.LENGTH_SHORT).show()
نمایش چند Toast پشت سر هم
گاهی ممکن است چند Toast بهصورت متوالی اجرا شوند و روی هم بیایند. برای جلوگیری از این حالت، بهتر است قبل از نمایش Toast جدید، Toast قبلی را لغو کنید:
var currentToast: Toast? = null
fun showToast(message: String) {
currentToast?.cancel()
currentToast = Toast.makeText(this, message, Toast.LENGTH_SHORT)
currentToast?.show()
}
تفاوت Toast با Snackbar
اگرچه Toast برای پیامهای کوتاه و سریع مناسب است، اما Snackbar در Material Design جایگزین مدرنتری است.
| ویژگی | Toast | Snackbar |
|---|---|---|
| موقعیت | پایین یا وسط صفحه | پایین صفحه |
| تعامل کاربر | ندارد | دارد (مثلاً دکمه Undo) |
| طراحی مدرن | خیر | بله |
| قابلیت بستن دستی | ندارد | دارد |
اگر میخواهید تجربه کاربری بهتری ارائه دهید، در بسیاری از پروژهها توصیه میشود از Snackbar بهجای Toast استفاده کنید.
نکات و خطاهای متداول
-
اگر در Thread غیر UI از Toast استفاده کنید، ممکن است خطا بگیرید؛ حتماً در UI Thread اجرا شود.
-
در برخی دستگاهها، محدودیت زمانی Toast اعمال میشود و طولانیتر از مقدار استاندارد نمایش داده نمیشود.
-
در اندروید ۱۳ به بعد، سیستم نمایش Toast تغییر کرده و از AppOverlay Toast پشتیبانی نمیکند (نیاز به Context دقیق دارد).
سوالات متداول درباره Toast در اندروید
۱. آیا میتوان مدت نمایش Toast را بیشتر از LENGTH_LONG تنظیم کرد؟
خیر، اما با استفاده از Handler یا CountDownTimer میتوانید Toast را چندبار پشت سر هم نمایش دهید تا طولانیتر شود.
۲. آیا Toast فقط در Activity قابل نمایش است؟
خیر، در Fragment و Service هم میتوانید از Toast استفاده کنید؛ کافی است Context درست را پاس دهید.
۳. چگونه میتوان فونت یا رنگ متن Toast را تغییر داد؟
باید از Custom Toast و Layout اختصاصی استفاده کنید.
جمعبندی
Toast در اندروید ابزاری ساده ولی بسیار کاربردی برای نمایش اطلاعرسانیهای سریع است. با استفاده از آن میتوانید بدون ایجاد وقفه در رابط کاربری، پیامهای مهمی مانند موفقیت، هشدار یا خطا را به کاربر نمایش دهید.
با یادگیری ساخت Toastهای سفارشی، میتوانید تجربهی کاربری جذابتر و حرفهایتری در اپلیکیشن خود ایجاد کنید.
دیدگاهتان را بنویسید