Floating Context Menu & Popup Menu

 

Floating Context Menu :

في اغلب الاحيان تستخدم هذه ال menu اذا اردنا اظهار قائمة على الشاشة عند الضغط على عنصر من ال listView او gridView

كما هو موضح في الشكل التالي :

 

 

اولاّ نصمم xml فايل خاص بهذه ال menu كما تعلمنا في الدرس السابق.

يتم كتابة كود هذه ال menu في كلاس الواجهة الخاصة بهذه ال list
عن طريق استدعاء دالة ()onCreateContextMenu ونمررلها ال view المرتبط بها كما هو موضح بالكود التالي :

 

لاحظ اننا مررنا له بالإضافة الى ملف xml الخاص بهذه ال menu مررنا view المختار عند الضغط عليه , لنحصل على كافة المعلومات عن هذا العنصر  .

اخيراً يتم كتابة كود تفعيل اي action عند الضغط على هذه ال menu عن طريق دالة ()onContextItemSelected

كما هو موضح بالكود التالي :

Popup Menu

القائمة المنبثقة (Popup Menu) هي قائمة ملحقة بعنصر واجهة View وتظهر أسفله أو
أعلاه إن لم تتوفر مساحة لعرضها كما هو موضح بالشكل التالي , و ممكن أن تستخدم في الحالات التالية:

  1. إظهار قائمة من الإجراءات المتعلقة بمحتوى معين. على سبيل المثال, عند النقر على زر في شريط العمل (Bar Action)
    يتم إظهار قائمة منبثقة تتضمن مجموعة من الإجراءات.
  2. إظهار قائمة من الإجراءات التفصيلية التي تتفرع من إجراء أساسي. فمثالً, عند النقر على زر “إرسال”,
    تظهر قائمة منبثقة من إجراءات “إرسال” أخرى مثل إرسال إلى الجميع, إرسال إلى صديق, إرسال إلى
    مجموعة, وهكذا.

إظهار القائمة المنبثقة (Menu Popup) يتم بالخطوات التالية:

  1. أنشئ object من نوع PopupMenu بحيث يمرر إلى constructor الخاص بها Context
    الخاص بالتطبيق بالإضافة إلى عنصر الواجهة view التي يراد إلحاق القائمة به .
  2. استخدام object من نوع MenuInflater إلنشاء القائمة باستخدام ملف التصميم XML الخاص بالقائمة.
  3. إظهار القائمة بتنفيذ الدالة ()show.Poupmenu.

على سبيل المثال, الكود التالي يوضح التصميم الخاص بزر Button والذي عند النقر عليه يتم تنفيذ الدالة
showPopup والمسؤولة عن إظهار قائمة منبثقة (Menu Popup) .

 

 

لتنفيذ إجراء معين عند النقر على أي عنصر في القائمة المنبثقة Popup يجب إنشاء (Listener)من نوع
OnMenuItemClickListener.MenuPopupMenu وتسجيله باستخدام الدالة
()PopupMenu.setOnMenuItemClickListener ومن ثم كتابة كود اإلجراء المطلوب في الدالة
()onMenuItemClick .الكود التالي يوضح هذه الخطوة: