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

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

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

صورة تعرض الآن في تطبيق 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"، كما في الإجراء المفضّل في المثال على الرمز، يتم عرض الإجراء كزر في حال توفُّر مساحة لذلك في شريط التطبيقات. وإذا لم تكن هناك مساحة كافية، يتم إرسال الإجراءات الزائدة إلى القائمة الكاملة. في حال ضبط app:showAsAction="never"، كما هو الحال في إجراء الإعدادات في المثال البرمجي، يتم دائمًا إدراج الإجراء في القائمة الكاملة ولن يتم عرضه في شريط التطبيقات.

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

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

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

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

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);

    }
}