Toast در اندروید

یک Toast بازخورد ساده در مورد عملیات در یک پنجره کوچک ارائه می دهد. این فقط مقدار فضای ضروری برای پیام را پر می کند و اکتیویتی جاری قابل مشاهده و تعاملی باقی می ماند. Toast ها به طور خودکار پس از یک وقفه ناپدید می شوند.


برای مثال، با کلیک روی Send (ارسال) یک ایمیل یک پیام "Sending message..." ایجاد می کند، همانطور که در تصویر زیر نشان داده شده است:

اگر پاسخ کاربر به پیام وضعیت مورد نیاز باشد، بجای آن یک Notification در نظر می گیریم.
اصول اولیه
ابتدا یک شیء Toast با یکی از متدهای makeText() ایجاد کنید. این متد دارای سه پارامتر است: Context برنامه، پیام متنی، و مدت زمان نمایش Toast. این یک شی Toast  که به درستی مقداردهی شده است را باز می گرداند. شما می توانید اعلان (notification)، toast را همانطور که در مثال زیر نشان داده شده است، با show() نمایش دهید:

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

این مثال همه چیزهایی را که برای اکثر اعلانات toast  نیاز دارید را نشان می دهد. شما به ندرت به چیزهای دیگر نیاز دارید. با این حال، شما می توانید با استفاده از لایوت خود، به جای یک پیام متنی ساده، به راحتی موقعیت آن را متفاوت کنید. بخش های زیر توضیح می دهند که چگونه می توانید این کارها را انجام دهید.

شما همچنین می توانید روش های خود را زنجیره ای کنید و از نگه داشتن شی Toast جلوگیری کنید، مانند این:

Toast.makeText(context, text, duration).show();

موقعیت Toast
اعلان Toast استاندارد  در نزدیکی پایین صفحه و در مرکز افقی ظاهر می شود. شما می توانید این موقعیت را با روش setGravity(int, int, int) تغییر دهید. این سه پارامتر را می پذیرد: یک Gravity  ثابت، یک افست موقعیت x و یک افست موقعیت y .
برای مثال، اگر تصمیم بگیرید که Toast در گوشه سمت چپ بالا ظاهر شود، می توانید gravity  (درجه) را مانند این تنظیم کنید:
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
اگر میخواهید موقعیت را به سمت راست بکشید، مقدار پارامتر دوم را افزایش دهید. برای پایین آوردن آن، مقدار آخرین پارامتر را افزایش دهید.
ایجاد یک Toast سفارشی
اگر پیام ساده متنی کافی نیست، می توانید یک لایوت سفارشی برای Toast خود ایجاد کنید. برای ایجاد یک لایوت سفارشی، لایوت نمایش را در XML یا کد برنامه خود تعریف کنید و شی View  را به متد setView(View) منتقل کنید.
به عنوان مثال، می توانید برای لایوت Toast قابل نمایش در اسکرین شات را با XML زیر ایجاد کنید (در مسیر layout/custom_toast.xml ذخیره شده):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id
="@+id/custom_toast_container"
              android:orientation
="horizontal"
              android:layout_width
="fill_parent"
              android:layout_height
="fill_parent"
              android:padding
="8dp"
              android:background
="#DAAA"
              >
    <ImageView android:src
="@drawable/droid"
               android:layout_width
="wrap_content"
               android:layout_height
="wrap_content"
               android:layout_marginRight
="8dp"
               />
    <TextView android:id
="@+id/text"
              android:layout_width
="wrap_content"
              android:layout_height
="wrap_content"
              android:textColor
="#FFF"
              />
</LinearLayout>

 

توجه داشته باشید که ID عنصر LinearLayout ، "custom_toast_container" است. شما باید از این ID و ID فایل لایوت "custom_toast" برای inflate کردن لایوت استفاده کنید، همانطور که در اینجا نشان داده شده است:

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.custom_toast,
                (ViewGroup) findViewById(R.id.custom_toast_container));

TextView text = (TextView) layout.findViewById(R.id.text);
text.setText(
"This is a custom toast");

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

 

ابتدا LayoutInflater را با getLayoutInflater() (یا getSystemService()) بازیابی کنید، و سپس با استفاده از inflate(int, ViewGroup)، لایوت را از XML بیرون بکشید. اولین پارامتر منبع طرح ID است و دوم نمایش ریشه است. شما می توانید از inflated layout برای پیدا کردن بیشتر اشیا، تصاویر و تعریف محتوا برای عناصر ImageView و TextView در لایوت استفاده کنید. سرانجام ایجاد یک Toast جدید با Toast(Context) و تنظیم برخی از ویژگی های Toast مانند gravity  و مدت زمان نمایش. سپس setView(View) را فراخوانی کنید و عبور آن از inflated layout . اکنون می توانید با استفاده از show() Toast را با طرح سفارشی خود نمایش دهید.
نکته: از constructor  (سازنده) عمومی برای Toast استفاده نکنید، مگر اینکه شما با استفاده از setView(View) لایوت را تعریف کنید. اگر شما لایوت سفارشی برای استفاده نداشته باشید، باید از makeText(Context, int, int) برای ایجاد Toast استفاده کنید.
منبع: https://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastView

 

 

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید

تماس با آموزشگاه