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

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

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

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

صورة تعرض تطبيق Now in Android مع رمز شريط الإجراءات
الشكل 1. رمز إجراء في تطبيق "Now in 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"، كما هو الحال في الإجراء settings في الرمز النموذجي، سيتم إدراج الإجراء دائمًا في القائمة الكاملة ولن يتم عرضه في شريط التطبيق.

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

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

عندما يختار المستخدم أحد عناصر شريط التطبيق، يستدعي النظام طريقة 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);

    }
}