إضافة الإجراءات ومعالجتها

تجربة ميزة "الكتابة"
‫Jetpack Compose هي مجموعة أدوات واجهة المستخدم المُقترَحة لنظام التشغيل Android. تعرَّف على كيفية إضافة مكوّنات في ميزة "الإنشاء".

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

المساحة في شريط التطبيقات محدودة. إذا كان التطبيق يعلن عن إجراءات أكثر من تلك التي يمكن أن تتسع في شريط التطبيق، يرسل شريط التطبيق الإجراءات الزائدة إلى قائمة overflow. يمكن للتطبيق أيضًا تحديد أنّ إجراءً معيّنًا يظهر دائمًا في القائمة الكاملة بدلاً من عرضه في شريط التطبيق.

صورة تعرض تطبيق "الآن" على Android مع رمز شريط الإجراءات
الشكل 1. رمز إجراء في تطبيق "الميزات الجديدة في Android"

إضافة أزرار إجراءات

يتم تحديد جميع أزرار الإجراءات والعناصر الأخرى المتاحة في قائمة الإجراءات الإضافية في مرجع قائمة بتنسيق XML. لإضافة إجراءات إلى شريط الإجراءات، أنشئ ملف XML جديدًا في دليل res/menu/ الخاص بمشروعك.

أضِف عنصر <item> لكل عنصر تريد تضمينه في شريط الإجراءات، كما هو موضّح في المثال التالي لملف XML الخاص بالقائمة:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto">

    <!-- "Mark Favorite", must appear as action button if possible. -->
    <item
        android:id="@+id/action_favorite"
        android:icon="@drawable/ic_favorite_black_48dp"
        android:title="@string/action_favorite"
        app:showAsAction="ifRoom"/>

    <!-- Settings, must always be in the overflow. -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          app:showAsAction="never"/>

</menu>

تحدِّد السمة app:showAsAction ما إذا كان الإجراء يظهر كزر في شريط التطبيق. في حال ضبط app:showAsAction="ifRoom"، كما هو الحال في مثال الرمز البرمجي لسمة favorite، يتم عرض الإجراء كزر إذا كان هناك مساحة في شريط التطبيق. إذا لم تكن هناك مساحة كافية، يتم إرسال الإجراءات الزائدة إلى قائمة الخيارات الإضافية. في حال ضبط app:showAsAction="never"، كما هو الحال في إعدادات رمز المثال، يتم إدراج الإجراء دائمًا في القائمة الكاملة ولا يتم عرضه في شريط التطبيق.

يستخدم النظام رمز الإجراء كزرّ للإجراء إذا كان الإجراء معروضًا في شريط التطبيق. يمكنك العثور على العديد من الرموز المفيدة في مجموعة رموز Material.

الردّ على الإجراءات

عندما يختار المستخدم أحد عناصر شريط التطبيق، يستدعي النظام onOptionsItemSelected() طريقة الاستدعاء في نشاطك ويمرّر MenuItem كائنًا لتحديد العنصر الذي تم النقر عليه. في عملية تنفيذ onOptionsItemSelected()، استخدِم الأسلوب MenuItem.getItemId() لتحديد العنصر الذي تم النقر عليه. يتطابق المعرّف الذي يتم عرضه مع القيمة التي تذكرها في سمة android:id عنصر <item> المقابل.

على سبيل المثال، يتحقّق مقتطف الرمز البرمجي التالي من الإجراء الذي يختاره المستخدم. إذا لم تتعرّف الطريقة على إجراء المستخدم، ستستدعي طريقة الفئة الأساسية:

Kotlin

override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
    R.id.action_settings -> {
        // User chooses the "Settings" item. Show the app settings UI.
        true
    }

    R.id.action_favorite -> {
        // User chooses the "Favorite" action. Mark the current item as a
        // favorite.
        true
    }

    else -> {
        // The user's action isn't recognized.
        // Invoke the superclass to handle it.
        super.onOptionsItemSelected(item)
    }
}

Java

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_settings:
            // User chooses the "Settings" item. Show the app settings UI.
            return true;

        case R.id.action_favorite:
            // User chooses the "Favorite" action. Mark the current item as a
            // favorite.
            return true;

        default:
            // The user's action isn't recognized.
            // Invoke the superclass to handle it.
            return super.onOptionsItemSelected(item);

    }
}