ساخت-toast-سفارشی
تاریخ انتشار :     16 بهمن 1397

در این مقاله قصد ساخت Toast سفارشی را داریم و میخواهیم به سلیقه ی خودمان طراحی کنیم یا بعبارتی یک Toast سفارشی ایجاد کنیم.

ابتدا یک اکتیویتی ایجاد کرده و در xml آن کد زیر را وارد کنید:

ما سه Button با متن های خطا، موفقیت آمیز و پیش فرض ایجاد کردیم. می خواهیم طبق این سه دکمه، سه Toast سفارشی داشته باشیم.یک Toast با بک گراند قرمز برای دکمه ی خطا، یک Toast با بک گراند سبز برای دکمه ی موفقیت آمیز و یک Toast با بک گراند آبی برای دکمه ی پیش فرض.

برای ساخت Toast سفارشی ابتدا باید یک layout بنام layout_custom_toast ایجاد کرده و داخل آن یک Textview قرار دهید:

سپس داخل فولدر customwidget یک کلاس بنام Toast ایجاد کنید و کد زیر را در آن وارد کنید:

توضیح کد بالا:

می خواهیم سه نوع Toast داشته باشیم.پس ابتدا سه drawable ایجاد کرده و کد زیر را در آن وارد می کنیم:

در قسمت های قبلی درمورد عملکرد کد بالا توضیح دادیم.کد هر سه drawable به همین صورت است فقط  رنگی که در قسمت solid مشخص می کنیم فرق دارد.(سه رنگ متفاوت)

داخل کلاس لازمه سه متغیر از نوع integer تعریف کنیم تا به کمک آن ها مشخص کنیم Toast از کدام نوع است:

یک متد بنام BackgroundToast تعریف می کنیم تا  یکی این متغیرهای بالا را بعنوان ورودی بگیرد و براساس آن یک drawable به ما برگرداند. چون خروجی  drawable ازنوع integer است ، خروجی متد را از نوع  integer تعریف می کنیم:

با ساختار switch/case چک می کنیم که ورودی (type) از چه نوع است و بر اساس نوع آن drawable مربوطه را return می کنیم.

حالا برای کلاسمون یک constructor می نویسیم(با فشاردادن کلید های Alt+Insert چند متد میاره که ما constructor را انتخاب می کنیم ).سپس به ورودی های constructor یک context برای مشخص کردن اکتیویتی، یک  String برای مشخص کردن متن Toast و یک integer برای مشخص کردن نوع Toast تعریف می کنیم:

از Toast پیشفرض اندروید یک شی می سازیم:

یک View تعریف کرده و با LayoutInflater  ظاهری  که برای Toast طراحی کردیم ، فراخوانی می کنیم:

از داخل این View ، LinearLayout را findViewById می کنیم:

با استفاده از setBackgroundResource برای LinearLayout بک گراند تعریف می کنیم.متد setBackgroundResource بعنوان رودی از ما یک integer می خواهد، پس متد BackgroundToast را به ورودی آن می دهیم و به ورودی BackgroundToast نیز type را می دهیم:

Textview داخل View را findViewById کرده و text را بعنوان متن آن ست می کنیم:

View که تا اینجا تعریف کردیم را با استفاده از setView ، برای Toast ست می کنیم:

یک Duration هم برای مدت زمان نشان دادن Toast تنظیم می کنیم:

و در آخر Toast را نمایش می دهیم:

تا اینجا کدهای ساخت یک Toast را نوشتیم.حالا می خواهیم طرز نوشتن Toast سفارشی مانند Toast پیشفرض اندروید باشد، یعنی به یک متد makeText  نیاز داریم که داخل آن یک شی از Toast سفارشی بسازیم و آن را return کنیم:

کد Activity

داخل اکتیویتی که شامل سه Button بود کد زیر را وارد کنید:

توضیح کد بالا:

ابتدا یک Context و سه Button تعریف می کنیم. سپس آن ها را findViewById کرده و برای هر کدام setOnClickListener  می نویسیم. داخل onClick هر کدام Toast سفارشی را فراخوانی کرده و مطابق با متن Button ، یک text به آن می دهیم.همچنین نوع Toast را نیز بعنوان پارامتر ورودی ،از کلاس Toast فراخوانی کرده و به آن می دهیم:

 

خروجی پروژه

کلیک روی دکمه ی خطا :

کلیک روی دکمه ی موفقیت آمیز:

کلیک روی دکمه ی پیش فرض:

نویسنده: الهه ابراهیمی

  • امتیاز :
    1 ستاره2 ستاره3 ستاره4 ستاره5 ستاره (1 رای, میانگین : 5٫00)
    Loading...
  • نظرات