Toolbar: شريط الأدوات في تطبيقات Android

المؤلف: IT Sectr نُشر: 2026-02-23 وقت القراءة: 12 دق

Toolbar (شريط الأدوات) هو مكون Android حل محل ActionBar، يعرض عنوان الشاشة وعناصر التنقل والإجراءات. Toolbar جزء من مكتبة Material Design Library وهو قابل للتخصيص بالكامل: من عنوان قياسي إلى طرق عرض مخصصة وأيقونات متحركة. اقرأ المزيد عن المكون في مواصفات Material Design 3.

النقاط الرئيسية

  • Toolbar هو شريط أدوات Android قابل للتخصيص، خليفة ActionBar من Material Design
  • ActionBar هو شريط النظام الذي كان موجوداً قبل Android 5.0، واستُبدِل بـ Toolbar
  • Material 3 — Top App Bar بأربعة أشكال: Small و Center-aligned و Medium و Large
  • Menu — قائمة XML مع action items، مدمجة في Toolbar عبر onCreateOptionsMenu
  • التخصيص — العنوان، الشعار، أيقونة التنقل، طرق العرض المخصصة والرسوم المتحركة

ما هو Toolbar؟

Toolbar هو مكون Android من مكتبة Material Design (androidx.appcompat.widget.Toolbar) يوفر شريط أدوات مرن لشاشة التطبيق. حل Toolbar محل ActionBar القديم، مما يمنح المطورين تحكماً كاملاً في المظهر والسلوك. يمكن وضعه في أي مكان في التخطيط، ويمكن أن يكون له طرق عرض فرعية مخصصة، ورسوم متحركة، ويتكيف مع أحجام الشاشات المختلفة.

يحدد Material Design 3 (2026) Top App Bar — تطور Toolbar — بأربعة أشكال: Small (مدمج، 48 dp)، Center-aligned (عنوان في المنتصف)، Medium (عنوان موسع، 112 dp) و Large (عنوان كبير، 168 dp). كل شكل له سلوك التمرير الخاص به: Small يبقى ثابتاً، Medium و Large ينهاران إلى Small عند التمرير لأعلى.

يعرض Toolbar ثلاث مناطق رئيسية: أيقونة التنقل (يساراً، عادةً أيقونة همبرغر أو سهم رجوع)، عنوان الشاشة (الوسط أو اليسار) و action items (يميناً — أيقونات الإجراءات، قائمة overflow). يمكن أن يحتوي Toolbar على شعار وشروق وطرق عرض مخصصة (search view, switch) و CollapsingToolbarLayout متحرك مع CoordinatorLayout.

ActionBar: التاريخ والتطور

ActionBar هو شريط نظام Android ظهر في Android 3.0 (API 11) كبديل لـ Title Bar القديم. كان ActionBar مرتبطاً بشدة بـ Activity، وله موضع ثابت في أعلى الشاشة وخيارات تخصيص محدودة. مع إصدار Android 5.0 (Lollipop، 2014) ومكتبة AppCompat، قدمت Google Toolbar كبديل مرن.

العيوب الرئيسية لـ ActionBar التي حلها Toolbar: موضع ثابت (فقط في الأعلى)، عدم دعم الرسوم المتحركة، صعوبة مع طرق العرض المخصصة، مشاكل مع CoordinatorLayout و CollapsingToolbarLayout. أعلنت Google رسمياً أن ActionBar قديم (deprecated) في 2015 وتوصي باستخدام Toolbar لجميع المشاريع الجديدة. بدءاً من Android 12 (2021)، تم تعطيل ActionBar افتراضياً في سمات Material 3 الجديدة.

الميزةActionBarToolbar
الموضعثابت بالأعلىأي مكان في التخطيط
التخصيصمحدود (اللون، الخلفية)كامل (طرق العرض، الأنماط، الرسوم المتحركة)
الانهيارغير مدعومCollapsingToolbarLayout
الرسوم المتحركةالنظام فقطأي (ObjectAnimator، Transition)
Material 3غير مدعومSmall / Medium / Large App Bar

إعداد Toolbar في Android

لاستخدام Toolbar يجب: (1) تعيين سمة بدون ActionBar (Theme.Material3.NoActionBar أو Theme.AppCompat.NoActionBar)، (2) إضافة Toolbar إلى تخطيط XML، (3) تعيينه كـ ActionBar عبر setSupportActionBar. بعد ذلك، يحصل Toolbar على جميع وظائف ActionBar: معالجة القائمة وأيقونة التنقل والعنوان من AndroidManifest.

xml
<!-- activity_main.xml مع Toolbar -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:elevation="4dp"
        app:titleTextColor="@android:color/white"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>
kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val toolbar = findViewById<Toolbar>(R.id.toolbar)
        setSupportActionBar(toolbar)

        // إعداد أيقونة التنقل
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_menu)

        // عنوان مخصص
        supportActionBar?.title = "الرئيسية"
        supportActionBar?.subtitle = "مرحباً أيها المستخدم!"
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        menuInflater.inflate(R.menu.toolbar_menu, menu)
        return true
    }
}

دمج القائمة في Toolbar

Toolbar يتكامل مع نظام قائمة Android عبر callbacks الخاصة بـ onCreateOptionsMenu و onOptionsItemSelected. تحدد القائمة action items — أيقونات الإجراءات المعروضة على اليمين في Toolbar. إذا لم تكن action items مناسبة، فإنها تنتقل تلقائياً إلى قائمة overflow (ثلاث نقاط). يتحكم المطور في ذلك عبر السمة app:showAsAction: always، ifRoom، never.

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

    <item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_search"
        android:title="بحث"
        app:showAsAction="ifRoom"
        app:actionViewClass="androidx.appcompat.widget.SearchView" />

    <item
        android:id="@+id/action_notifications"
        android:icon="@drawable/ic_notifications"
        android:title="إشعارات"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_settings"
        android:title="الإعدادات"
        app:showAsAction="never" />
</menu>
kotlin
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    return when (item.itemId) {
        R.id.action_search -> {
            Toast.makeText(this, "بحث", Toast.LENGTH_SHORT).show()
            true
        }
        R.id.action_notifications -> {
            openNotifications()
            true
        }
        R.id.action_settings -> {
            openSettings()
            true
        }
        else -> super.onOptionsItemSelected(item)
    }
}

Material 3: Center و Large Top App Bar

Material 3 يقدم أربعة أشكال من Top App Bar: Small (مدمج، 48 dp)، Center-aligned (عنوان في المنتصف)، Medium (112 dp مع عنوان موسع) و Large (168 dp مع عنوان كبير). يدعم Medium و Large App Bar سلوك الانهيار — عند التمرير لأعلى، ينهاران بسلاسة إلى Small. يتم التحكم في الرسوم المتحركة عبر CoordinatorLayout و AppBarLayout.

Center-aligned Top App Bar هو شكل جديد من Material 3 حيث يكون العنوان في منتصف الشريط. يُستخدم هذا النمط غالباً في تطبيقات Google (Play Store، YouTube) ويُنصح به للشاشات ذات عدد قليل من action items. Small Top App Bar هو Toolbar الكلاسيكي المتوافق مع إصدارات Android القديمة. Medium و Large مناسبان للشاشات حيث العنوان عنصر رئيسي (الملف الشخصي، الصفحة الرئيسية).

xml
<!-- Material 3 Large Top App Bar مع CollapsingToolbarLayout -->
<CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="168dp"
            app:contentScrim="?attr/colorPrimary"
            app:titleEnabled="true"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin" />
        </CollapsingToolbarLayout>
    </AppBarLayout>

    <androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:text="محتوى الشاشة..." />
    </NestedScrollView>
</CoordinatorLayout>

التخصيص المتقدم لـ Toolbar

Toolbar يدعم التخصيص الكامل: تغيير الارتفاع، رسوم متحركة للظهور/الاختفاء، طرق عرض فرعية مخصصة، شعار، أيقونة تنقل، PopupMenu والتكامل مع CoordinatorLayout. للرسوم المتحركة للاختفاء عند التمرير، يُستخدم AppBarLayout مع الأعلام scroll، enterAlways، snap. لتأثير التزييف (parallax) للصورة أسفل Toolbar — CollapsingToolbarLayout مع mode parallax.

يتم تعيين الشعار والشروق عبر طريقتي setLogo و setSubtitle. يتم تكوين أيقونة التنقل عبر setNavigationIcon و setNavigationOnClickListener. تُضاف طرق العرض المخصصة عبر addView مباشرة في Toolbar. لـ SearchView، يُستخدم MenuItem مع actionViewClass. للسمة الداكنة، يتم تطبيق ألوان سمات Material 3 تلقائياً.

kotlin
// التخصيص المتقدم لـ Toolbar
with (toolbar) {
    // الشعار والعنوان
    setLogo(R.drawable.ic_logo)
    setTitle("تطبيقي")
    setSubtitle("الإصدار 2.0")

    // أيقونة التنقل مع المعالج
    setNavigationIcon(R.drawable.ic_drawer)
    setNavigationOnClickListener {
        drawerLayout.open()
    }

    // طريقة عرض مخصصة — Switch للمظهر
    val themeSwitch = Switch(this@MainActivity).apply {\n        thumbDrawable = ContextCompat.getDrawable(
            this@MainActivity, R.drawable.ic_theme
        )
    }
    addView(themeSwitch)

    // PopupMenu مخصص
    setOnMenuItemClickListener { item ->
        Toast.makeText(this@MainActivity, item.title, Toast.LENGTH_SHORT).show()
        true
    }
}

الأسئلة الشائعة

ما الفرق بين Toolbar و ActionBar؟

ActionBar هو شريط نظام من Android 3.0–4.4 مع تخصيص محدود. Toolbar هو مكون مرن من Material Design يمكن وضعه في أي مكان في التخطيط وتحريكه وملؤه بطريقة عرض مخصصة. يحل Toolbar محل ActionBar بالكامل عبر setSupportActionBar.

كيف أخفي Toolbar عند التمرير؟

استخدم CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout. قم بتعيين علم scroll لـ Toolbar في layout_scrollBehavior. عند التمرير لأسفل، يختفي Toolbar؛ عند التمرير لأعلى، يظهر مع حركة. في Material 3، ينهار Medium/Large Top App Bar إلى Small.

كم عدد action items التي يمكن وضعها في Toolbar؟

الحد هو العرض الفعلي للشاشة. يُوصى بـ 2–4 action items (أيقونات). تنتقل البقية إلى قائمة overflow (ثلاث نقاط). الإعداد عبر app:showAsAction: always (إظهار دائماً)، ifRoom (إذا كان هناك مساحة)، never (في overflow).

كيف أضيف SearchView إلى Toolbar؟

SearchView يُضاف كـ action view في القائمة. في XML menu: app:actionViewClass="androidx.appcompat.widget.SearchView". ينهار SearchView تلقائياً إلى أيقونة بحث ويتوسع عند الضغط. يدعم البحث الصوتي والإكمال التلقائي عبر SearchRecentSuggestionsProvider.

ما هو CollapsingToolbarLayout؟

CollapsingToolbarLayout هو حاوية لـ Toolbar تنهار بشكل متحرك عند تمرير المحتوى. يُستخدم مع CoordinatorLayout و AppBarLayout. يدعم أوضاع: pin (ثابت)، parallax (تأثير التزييف). مثالي للشاشات التي تحتوي على صورة رأس (الملف الشخصي، صفحة التفاصيل).

الملخص

  • Toolbar هو شريط أدوات Android مرن حل محل ActionBar ومتكامل بالكامل مع Material Design
  • Material 3 Top App Bar — أربعة أشكال: Small، Center-aligned، Medium، Large بسلوك تمرير مختلف
  • ActionBar هو شريط نظام قديم، محدود في التخصيص والرسوم المتحركة
  • القائمة و action items — التكامل عبر قائمة XML بأعلام always/ifRoom/never للتحكم في الرؤية
  • CollapsingToolbarLayout — انهيار متحرك لـ Toolbar عند التمرير للشاشات التي تحتوي على صورة رأس
  • التخصيص — الشعار والشروق وطرق العرض المخصصة و SearchView و PopupMenu وألوان Material 3
  • SearchView — action view مدمج للبحث مع إدخال صوتي وإكمال تلقائي

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا