شرح Snackbar في الاندرويد

برنامج تعليمي Snackbar مع مثال في Android Studio

يعد Snackbar أداة تبدو وكأنها لافتة صغيرة تنبثق في الجزء السفلي من شاشة هاتف المستخدم. قد يكون من المفيد جدًا الإشارة إلى أي نوع من أخطاء النموذج للمستخدم ، أو التأكيد للمستخدمين أنه تم اتخاذ إجراء ما ، أو تنبيههم لاتخاذ بعض الإجراءات. بالإضافة إلى ذلك ، يمكن أن يقدم Snackbar أيضًا زرًا لإجراء مخصص مثل "الرفض" أو "إعادة المحاولة" أو "التراجع" أو "التجاوز" وما إلى ذلك.

مثال على شريط الوجبات الخفيفة في Android Studio

يشبه Android Snackbar تمامًا Toast في Android باستثناء أنه يمكن أن يوفر للمستخدم زر الإجراء action button للتفاعل معه . يمكنك استدعاء Snackbar على أنه عنصر واجهة مستخدم Toast باستخدام زر إجراء اختياري. أسمي زر الإجراء action button اختياريًا لأنك قد تختار إدراجه أو يمكنك فقط تجاهله ليبدو مشابهًا toast  (الذي لا يحتوي على زر إجراء).

بشكل عام ، يتم استخدام Snackbar عند طلب ملاحظات فورية من المستخدم بعد تنفيذ الإجراء.

يوجد بالفعل العديد من المكتبات على الإنترنت لصنع Snackbar في Android ؛ ولكن في هذا البرنامج التعليمي ، سنستخدم مكتبة     Material Design Support Library Android .

مزايا استخدام Snackbar  على ال Toast

فيما يلي بعض مزايا استخدام Snackbar على Toast :

1. يمكن برمجتها للتراجع عن أو عكس إجراء قام به مستخدم لم يمض وقت طويل. على سبيل المثال ، استعادة ملف محذوف مؤخرًا ، أو حتى إعادة فتح علامة تبويب المتصفح التي تم إغلاقها للتو.
2. يمكن للمستخدم تمرير شريط Snackbar يدويًا إلى اليمين أو اليسار لرفضه بسرعة ؛ على عكس toast  الذي يجب أن يبقى حتى نهاية الوقت المقرر له.
3. يتم عرض شريط Snackbar الخفيفة فقط في الجزء السفلي من الشاشة ، على عكس toast  الذي قد يعوق جزءًا مهمًا من الشاشة.


استخدام Snackbar في Android Studio

للاستفادة من Snackbar في مشروعك ، يجب عليك أولاً تضمين مكتبة Design Support Library  . وللقيام بذلك ، يمكنك إضافة الكود أدناه إلى ملف build.gradle (Module app) الخاص بك :

dependencies {
  implementation 'com.android.support:design:27.1.1'
  }

إنشاء Snackbar بدون ActionButton في Android Studio

هذا النوع من Snackbar يشبه إلى حد بعيد toast  باستثناء أنه يحتوي على جميع صفات Snackbar المحفوظة لزر action button .

Snackbar.make(coordinatorLayout, "Button is clicked", Snackbar.LENGTH_LONG);
  snackbar.show();

في الكود أعلاه:

تقبل طريقة make () - make () ثلاث (3) وسيطات : الأولى هي تخطيط الجذر للنشاط حيث سيتم عرض Snackbar ، والوسيطة الثانية هي الرسالة التي سيتم عرضها في Snackbar ، والثالثة هي مدة شريط الوجبات الخفيفة المراد عرضه.

طريقة العرض show () - show () تعرض شريط Snackbar

ملاحظة مهمة: إذا نسيت استدعاء طريقة show () لشريط Snackbar ، فلن يتم عرضها أبدًا .


إنشاء شريط Snackbar باستخدام زر Action Button في Android Studio

سيعرض الكود أدناه شريط Snackbar مع الرسالة "تم حذف الرسالة" مع زر action button 

 "UNDO" ؛ عند النقر فوق الزر "تراجع" ، سيتم عرض رسالة "تم استعادة الرسالة" في  آخر شريط Snackbar .

Snackbar snackbar = Snackbar
  .make(coordinatorLayout, "Message is deleted", snackbar.LENGTH_LONG)
  .setAction("UNDO", new View.OnClickListener() {
  @Override
  public void onClick(View view) {
  Snackbar snackbar1 = Snackbar.make(coordinatorLayout, "Message is restored!", Snackbar.LENGTH_SHORT);
  snackbar1.show();
  }
  });

  snackbar.show();


إنشاء شريط   Custom Snackbar  باستخدام زر Action Button

سيقوم الكود أدناه بإنشاء Snackbar بلون أصفر ولون زر إجراء أحمر.

Snackbar snackbar = Snackbar
  .make(coordinatorLayout, "Try again!", Snackbar.LENGTH_LONG)
  .setAction("RETRY", new View.OnClickListener() {
  @Override
  public void onClick(View view) {
  }
  });
  snackbar.setActionTextColor(Color.RED);
  View sbView = snackbar.getView();
  TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
  textView.setTextColor(Color.YELLOW);
  snackbar.show();

تنسيق اللون والخلفية والحجم والمزيد في Snackbar

يمكنك استخدام ما يلي لتصميم Snackbar أو حتى زر الإجراء الخاص به.

// styling for action text
  snackbar.setActionTextColor(Color.WHITE);

  // styling for rest of text
  View snackbarView = snackbar.getView();
  TextView textView = (TextView) snackbarView.findViewById(android.support.design.R.id.snackbar_text);
  textView.setTextColor(Color.RED);
  textView.setAllCaps(true);
  textView.setTextSize(20);

  // styling for background of snackbar
  View sbView = snackbarView;
  sbView.setBackgroundColor(Color.BLUE);

مثال على شريط  Snackbar في Android Studio

يوضح المثال أدناه نموذج التعليمات البرمجية لمشروع يقوم بتنفيذ عناصر واجهة مستخدم Snackbar. عندما ينقر المستخدم على الزر ، سيتم عرض Snackbar على الشاشة برسالة.

يمكنك أدناه تنزيل الكود ، والاطلاع على الإخراج النهائي والشرح خطوة بخطوة لمثال Snackbar في Android Studio.

تحميل المشروع  مثال على شريط الوجبات الخفيفة في Android Studio

الخطوة 1: قم بإنشاء مشروع جديد بالاسم  SnackbarExample

الخطوة 2: افتح build.gradle ( Module: app) وأضف مكتبة 

 design support  أدناه لمشروعك. سيسمح هذا بدعم Snackbar.


dependencies {
  implementation 'com.android.support:design:27.1.1'
  }

الخطوة 3: افتح الآن activity_main.xml وأدخل الكود أدناه :

نحن هنا نصمم مخطط مثال SnackBar باستخدام Linear Layout و TextView و Button. عند النقر على الزر ، سنعرض رسالة SnackBar.

<?xml version="1.0" encoding="utf-8"?>
  <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".MainActivity">

  <LinearLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:paddingTop="100dp"
  android:paddingLeft="20dp"
  android:paddingRight="20dp">

  <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center"
  android:gravity="center_horizontal"
  android:text="Click button below to bring up snackbar" />

  <Button
  android:id="@+id/callbackButton"
  android:layout_width="300dp"
  android:layout_height="50dp"
  android:layout_gravity="center_horizontal"
  android:layout_margin="50dp"
  android:backgroundTint="@android:color/holo_blue_light"
  android:textColor="@android:color/white"
  android:text="Tap To Display Snackbar Message"/>

  </LinearLayout>

  </android.support.constraint.ConstraintLayout>

الخطوة 4: افتح MainActivity.java وأضف الكود أدناه:

هنا نقوم بتمكين رسالة SnackBar بضغطة زر. تُستخدم وظيفة showSnacbar لعرض رسالة SnackBar على الشاشة.

package snackbarexample.abhiandroid.com.snackbarexample;

  import android.support.design.widget.Snackbar;
  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.view.View;
  import android.widget.Button;

  public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  Button button = (Button) findViewById(R.id.callbackButton);

  button.setOnClickListener(new View.OnClickListener() {
  public void onClick(View v) {
  // Button was clicked/tapped
  View view = findViewById(R.id.callbackButton);
  String message = "Snackbar message example displayed";
  int duration = Snackbar.LENGTH_SHORT;

  showSnackbar(view, message, duration);
  }
  });
  }

  public void showSnackbar(View view, String message, int duration)
  {
  Snackbar.make(view, message, duration).show();
  }

  }

المخرجات :

الآن قم بتشغيل التطبيق وسترى زرًا على الشاشة. الآن اضغط على الزر لعرض رسالة Snackbar.


ملخص سريع عن Snackbar

1. لاستخدام Snackbar ، تأكد من تضمين Android Design Support Library في مشروعك.
2. يجب عليك استدعاء طريقة show () قبل عرض Snackbar.
3. يجب استخدام زر action button   Snackbar للتفاعل  الخفيف مع المستخدم. أي إجراءات فورية.


في الختام ، يعد Snackbar مفيدًا جدًا ومفيدًا لتنبيه المستخدم بشأن إجراء تم تنفيذه مؤخرًا ، ويوفر خيارًا لعكس الإجراء الذي تم تنفيذه مؤخرًا.