اسنکبار (Snackbar) در اندروید
فیلم آشنایی با نحوهی کار با اسنک بار (Snakbar)
متن به همراه عکس آشنایی با نحوهی کار با اسنک بار (Snakbar)
در این مقاله میخواهیم با نحوهی کار با اسنکبار و جزییات آن آشنا شویم.
اسنکبار (Snakbar) چیست؟
پیغامی است که برای چند ثانیه به کاربر نشان داده میشود و بعد پاک میشود. در کنار اسنکبار نیز میتوانیم مثلا یک دکمه قرار بدهیم تا عملیاتی هم انجام شود. برای نمونه وقتی کاربر یک فایلی را پاک میکند، میتوانیم یک اسنکبار اضافه کنیم تا به کاربر عبارتی مثل “فایل موردنظر پاک شد” را نشان دهد و یا حتی دکمهای اضافه کنیم که اگر کاربر در هنگام پاک کردن پشیمان شد، دکمهی لغو را بزند و فایل پاک نشود. در واقع میتوان گفت که Snakbar تقریبا شبیه توست (Toast) هست اما با امکانات بیشتر و کمی متفاوت.
نحوهی استفاده از اسنکبار :
ابتدا باید یک کتابخانه به برنامهی خود اضافه کنیم
برای این کار ابتدا وارد قسمت زیر میشویم:
Gradle Scripts>build.gradle(Module:app)
حال کدنویسی زیر را انجام میدهیم:
1 |
implementation 'com.google.android.material:material:1.0.0' |
تعریف کد:
ورژن مربوط به کتابخانه ممکن است تغییر کند و ورژنهای جدید به بازار آمده باشد، برای اضافه کردن این کد هم میتوانید آن را به همین شکل بالا بنویسید و هم میتوانید در گوگل کتابخانهی اسنک بار را سرچ کنید. پیشنهاد من این است که کد را به همان صورت بالا اضافه کنید.
در نهایت بعد از اضافه کردن کد مربوط به کتابخانه، روی گزینهی Sync Now کلیک میکنیم تا کتابخانه به برنامهمان اضافه شود. دقت کنید که برای این کار حتما باید فیلترشکنمان روشن باشد.
در مرحلهی بعد، از طریق مسیر زیر وارد قسمت جاوا میشویم تا کدنویسی مربوط به اسنکبار را انجام دهیم.
app>java>اولین پوشه>MainActivity
1 2 3 |
ConstraintLayout constraintLayout = findViewById(R.id.cl); Snackbar.make(constraintLayout, "متن اسنکبار من", Snackbar.LENGTH_LONG) .show(); |
تعریف کدها:
- در خط 2 برای اسنکبار یک اسم انتخاب میکنیم. در این مرحله 3 ورودی از ما میگیرد:
- ورودی اول: یک ویو برای نشان دادن اسنکبار
- ورودی دوم: یک متن برای نشان دادن اسنکبار به کاربر
- ورودی سوم: بازه زمانی برای نشان دادن اسنکبار
- در خط 2 متن موردنظرمان (ورودی دوم) را مینویسیم. مثلا: “متن اسنکبار من”. همچنین کد مربوط به بازه زمانی برای ورودی سوم را نیز مینویسیم.
خط اول کدنویسی مربوط به ورودی اول است که قبل از نوشتن آن ابتدا باید عملیات زیر را انجام دهیم:
برای این که بتوانیم از اسنکبار استفاده کنیم، باید داخل یک ویویی تعریف شود (ورودی اول). مثلا میتوانیم داخل یک دکمه اسنکبار را تعریف کنیم و یا موارد دیگر. در این قسمت چون دکمه و یا ویوی دیگری نداریم، باید لایه را تعریف و از آن استفاده کنیم. بنابراین از طریق مسیر زیر وارد قسمت لایه میشویم:
app>res>layout>activity_main.xml
مشاهده میکنیم که به صورت پیش فرض لایهی کانسترینت لیوت را داریم. بنابراین یک آیدی برای لایهمان انتخاب میکنیم.
- سپس به قسمت جاوا برمیگردیم و کد مربوط به لایه را در خط اول مینویسیم.
- همچنین در خط 2 اسم مربوط به لایه را به عنوان ورودی اول اضافه میکنیم
حال از پروژه اجرا میگیریم.
مشاهده میکنیم که متن موردنظر را برای چند ثانیه به ما نشان میدهد.
ویژگیهای دیگر برای اسنکبار :
نکته: قبل از هرچیز دقت کنید هر ویژگی دیگری که میخواهید به اسنکبار اضافه کنید، باید قبل از کلمهی show در خط باشد. بنابراین لازم است گزینهی enter را بزنید تا در خط قبل از show ویژگی مد نظرمان را اضافه کنیم.
تعریف دکمه در اسنکبار :
برای تعریف کردن یک دکمه کد زیر را مینویسیم:
1 2 3 4 5 6 |
setAction("ok", new View.OnClickListener() { @Override public void onClick(View v) { } }) |
تعریف کدها:
در خط اول، که برای تعریف دکمه دو ورودی از ما میگیرد:
- ورودی اول: اسم دکمه (در اینجا اسم دکمه را ok مینویسیم)
- ورودی دوم: کاری که قرار است انجام دهد (مثلا خاصیت کلیک شدن میدهیم)
حال از پروژه یک اجرا میگیریم.
مشاهده میکنیم که متن موردنظر و همچنین دکمهای که تعریف کردیم نشان داده میشود که میتوانیم روی دکمه کلیک کنیم.
تعریف color در اسنکبار :
میتوانیم با کدنویسی زیر برای اسنکبار خود یک رنگ در نظر بگیریم و اضافه کنیم.
1 |
.setActionTextColor(getResources().getColor(R.color.colorPrimary)) |
از پروژه اجرا میگیریم.
مشاهده میکنیم که رنگ دکمه تغییر کرده است و همچنین میتوانیم کد رنگ دلخواه برای دکمهمان را انتخاب کنیم.
اضافه کردن duration در اسنکبار:
میتوانیم با استفاده از کدنویسی زیر، مدت زمانی را که میخواهیم متن اسنکبار به کاربر نشان داده شود، انتخاب کنیم. مثلا 90000 میلی ثانیه (1.30 دقیقه) را برای نمایش انتخاب میکنیم.
1 |
.setDuration(90000) |
از پروژه اجرا میگیریم.
مشاهده میکنیم که وقتی عبارت موردنظر نشان داده میشود، تا 1.30 دقیقهی بعد پاک نمیشود مگر این که کاربر روی دکمه کلیک کند
ویژگیهای دیگری نیز میتوانید به اسنکبار اضافه کنید که با گذاشتن یک نقطه در اول خط به شما نشان داده میشود.
تعریف کردن اسنکبار داخل دکمه:
فرض کنید بخواهیم این اسنکبار را داخل یک دکمه تعریف کنیم
ابتدا در قسمت لایه یک باتن اضافه میکنیم و آیدی آن را نیز انتخاب میکنیم.
سپس در قسمت جاوا باتنمان را تعریف میکنیم و کدنویسی زیر را انجام میدهیم
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Button button=findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Snackbar.make(v, "متن اسنکبار باتن", Snackbar.LENGTH_LONG) .setAction("okk", new View.OnClickListener() { @Override public void onClick(View v) { } }) .setActionTextColor(getResources().getColor(R.color.colorPrimary)) .setDuration(90000) .show(); |
تعریف کدها:
- در خط 1 باتن را تعریف میکنیم.
- در خط 2 به باتن خاصیت کلیک شدن میدهیم.
- از خط 5 تا 15 تمام کدنویسیهایی که انجام دادیم را کپی کرده و مینویسیم
نکته: کد مربوط به زمان در قسمت اسنکبار را پاک میکنیم تا عبارت موردنظر بعد از چند ثانیه به صورت خودکار برود.
- در خط 6 ویوی مربوط به باتن را مینویسیم، چون اگر ویوی مربوط به اسنکبار که همان کانسترینت لیوت است را بنویسیم، error میدهد.
حال از پروژه اجرا میگیریم.
مشاهده میکنیم که ابتدا برای چند ثانیه اسنکباری که در ابتدا برای لایه تعریف کردیم را نشان میدهد.
سپس در سمت چپ و بالای صفحه مشاهده میکنیم که باتن را نشان میدهد که با کلیک کردن روی آن، اسنکباری که داخل باتن تعریف کردهایم را نشان میدهد.
کدهای کامل جاوا:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
package com.kazemieh.www.snackbar; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.os.Bundle; import android.view.View; import android.widget.Button; import com.google.android.material.snackbar.Snackbar; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ConstraintLayout constraintLayout = findViewById(R.id.cl); Snackbar.make(constraintLayout, "متن اسنکبار من", Snackbar.LENGTH_LONG) .setAction("ok", new View.OnClickListener() { @Override public void onClick(View v) { } }) .setActionTextColor(getResources().getColor(R.color.colorPrimary)) .show(); Button button=findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Snackbar.make(v, "متن اسنکبار باتن", Snackbar.LENGTH_LONG) .setAction("okk", new View.OnClickListener() { @Override public void onClick(View v) { } }) .setActionTextColor(getResources().getColor(R.color.colorPrimary)) .setDuration(90000) .show(); } }); } } |
برای مشاهده لینک دانلود لطفا وارد حساب کاربری خود شوید!
وارد شویدپسورد فایل : ندارد گزارش خرابی لینک
مطالب زیر را حتما بخوانید
-
نحوهی کار با ویدئوپلیر (Video Player) از طریق پوشهی raw
7.42k بازدید
-
آلرت دیالوگ (AlertDialog) چیست و نحوهی کار با آن چگونه است؟
7.02k بازدید
-
ّFloating action Button (فلوتینگ اکشن باتن) در اندروید
4.39k بازدید
-
نحوهی کار با فریم لیوت (FrameLayout)
4.83k بازدید
-
یک روش برای تمرکز در برنامهنویسی
3.27k بازدید
-
رادیو باتن (RadioButton) در اندروید
1.94k بازدید
دیدگاهتان را بنویسید