View Hierarchy في Android Studio هي أداة قوية لتفتيش التسلسل الهرمي للـ View، تتيح للمطورين تحليل هيكل واجهة المستخدم للتطبيق في الوقت الفعلي. وفقًا للوثائق الرسمية لـ Android Developers (2025)، يوفر Layout Inspector معلومات مفصلة عن كل مكون من مكونات التخطيط، بما في ذلك أبعاده وهوامشه وسماته. هذه الأداة لا غنى عنها عند تصحيح واجهة المستخدم، والبحث عن العناصر المتداخلة وتحسين أداء العرض.
الرئيسية
View Hierarchy هي هيكل هرمي لجميع مكونات View التي تشكل واجهة مستخدم تطبيق Android. كل عنصر واجهة، سواء كان زرًا أو حقل نص أو صورة أو حاوية، يتم تمثيله في هذا التسلسل الهرمي كعقدة في الشجرة، وتعكس علاقة الأب والابن تداخل مكونات التخطيط.
في Android، تُبنى كل شاشة من ViewGroups (حاويات) و Views (أدوات). يحتوي ViewGroup على Views فرعية ويدير تموضعها. على سبيل المثال، LinearLayout يضع العناصر في خط، بينما ConstraintLayout يضعها وفق قيود. يقوم View Hierarchy بتصور هذا الهيكل كشجرة: الجذر هو ViewGroup الجذر (مثل content)، والأوراق هي أدوات طرفية مثل TextView أو ImageView.
عندما يعرض Android شاشة، فإنه يجتاز شجرة View من الأعلى إلى الأسفل: يقوم ViewGroup الأب بقياس وتموضع العناصر الفرعية، ثم يقوم كل عنصر فرعي برسم نفسه على Canvas. يحدد ترتيب الاجتياز ترتيب Z للعرض — العناصر المضافة لاحقًا تُرسم فوق العناصر السابقة. فهم هذا المبدأ مهم جدًا لتصحيح العناصر المتداخلة والتموضع غير الصحيح.
<!-- مثال على التسلسل الهرمي للـ View في التخطيط -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/titleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World" />
<Button
android:id="@+id/submitBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit" />
</androidx.constraintlayout.widget.ConstraintLayout>
Layout Inspector هي أداة Android Studio الرئيسية للعمل مع View Hierarchy. تلتقط لقطة للحالة الحالية لواجهة المستخدم لتطبيق قيد التشغيل وتعرض شجرة View الكاملة مع إمكانيات العرض التفاعلي. تتطلب جهازًا أو محاكيًا بمستوى API 14 أو أعلى.
عند التشغيل، يتصل Layout Inspector بعملية التطبيق ويطلب تفريغًا للحالة الحالية لـ WindowManager. تشمل النتيجة ليس فقط شجرة View ولكن أيضًا لقطة شاشة مع حدود العناصر المتراكبة. يتيح هذا رؤية Views التي تم عرضها وأين توجد حرفيًا، مع مطابقة العرض المرئي مع كود التخطيط.
يدعم Layout Inspector وضع Live Update، حيث يتم تحديث اللقطات تلقائيًا عند تغير حالة واجهة المستخدم — على سبيل المثال، بعد النقر على زر أو الانتقال إلى شاشة أخرى. هذا مفيد بشكل خاص عند تصحيح الرسوم المتحركة والتغييرات الديناميكية للواجهة، عندما تحتاج إلى تتبع كيفية تغير شجرة View استجابةً لإجراءات المستخدم.
// مثال على إضافة View ديناميكيًا في وقت التشغيل
val dynamicView = TextView(this).apply {
id = View.generateViewId()
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
text = "Dynamic View"
}
binding.root.addView(dynamicView)
توفر View Hierarchy في Android Studio مجموعة من الوظائف للتحليل العميق لواجهة المستخدم. تتجاوز الأداة مجرد عرض الشجرة وتتضمن تفتيش الخصائص والتحليل ثلاثي الأبعاد وتصفية المكونات.
عند تحديد أي View في الشجرة، تفتح لوحة Properties بقائمة كاملة من السمات: layout_width و layout_height و padding و margin و visibility و elevation و background وجميع السمات المخصصة من سمة التطبيق. تُعرض القيم بالبكسل و dp على حد سواء، مما يسهل المطابقة مع كود التخطيط.
| الخاصية | الوصف | قيمة مثال |
|---|---|---|
| mLeft, mTop | إحداثيات الزاوية العلوية اليسرى بالنسبة للوالد | 24px (12dp) |
| mMeasuredWidth | العرض المقاس بعد مرحلة القياس | 192px (96dp) |
| getVisibility | رؤية العنصر: visible أو invisible أو gone | visible |
| getAlpha | شفافية العنصر في النطاق 0–1 | 1.0 |
| getElevation | ارتفاع العنصر لعرض الظل | 4dp |
يقدم Layout Inspector عرضًا ثلاثي الأبعاد للتسلسل الهرمي للـ View، حيث يُعرض كل مكون كطبقة بارتفاع محدد (elevation). يتيح هذا رؤية العناصر التي تتداخل مع بعضها البعض وترتيب Z المستخدم أثناء العرض. هذا الوضع مفيد بشكل خاص عند العمل مع CardView و FloatingActionButton والمكونات الأخرى ذات الارتفاع.
للشاشات الكبيرة ذات العشرات من Views، يتوفر البحث بالمعرف ونص المكون. يمكن تصفية الشجرة حسب نوع View (مثل عرض TextView فقط) أو إخفاء الحاويات، مع ترك العناصر الطرفية فقط. التصفية تسرع التنقل في ملفات التخطيط المعقدة ذات التداخل العميق. عند العمل مع RecyclerView، تسمح التصفية بعزل عنصر معين من القائمة لتحليل مفصل لمعلمات التخطيط والحالة الخاصة به.
يعرض View Hierarchy ليس فقط خصائص التخطيط ولكن أيضًا الموارد المرتبطة: background drawable ومصدر الصورة وألوان السمة. إذا كان View يستخدم VectorDrawable، يمكن رؤية المسار الدقيق للمورد. يساعد هذا في العثور على مشاكل المراجع غير الصحيحة للـ drawable — على سبيل المثال، عندما تستخدم سمة داكنة أيقونة فاتحة، أو عندما يشير مرجع المورد إلى ملف غير موجود.
تصحيح واجهة المستخدم باستخدام View Hierarchy يحل مهام عملية محددة يواجهها كل مطور Android. تتيح الأداة ليس فقط رؤية الشجرة بل إيجاد وحل مشاكل الأداء والعرض.
عندما يكون عنصر على الشاشة ليس في المكان المتوقع، يكفي فتح Layout Inspector ورؤية إحداثياته mLeft و mTop. غالبًا ما تكون المشكلة في هوامش غير صحيحة أو قيود مضبوطة بشكل خاطئ في ConstraintLayout. سيعرض View Hierarchy الموضع الدقيق والأبعاد الفعلية.
حاويات التخطيط شديدة التداخل تؤثر سلبًا على أداء العرض، لأن Android يقضي وقتًا أطول في مراحل القياس والتخطيط. يُظهر View Hierarchy مستوى تداخل كل عنصر بوضوح. العمق الموصى به لا يزيد عن 10 مستويات، وتجاوز 15 مستوى يعتبر مشكلة خطيرة تتطلب إعادة هيكلة باستخدام ConstraintLayout أو Merge.
في لوحة الخصائص يمكن رؤية العدد الفعلي لمرات القياس والتخطيط لكل View. يشير العدد المفرط من إعادة الرسم إلى هيكل تخطيط غير فعال. أدوات تصحيح GPU Overdraw مع View Hierarchy تعطي صورة كاملة: أي Views تُرسم فوق أخرى دون داعٍ، مما يخلق حملًا زائدًا على GPU. تحليل GPU Overdraw مع بيانات Layout Inspector يعطي صورة كاملة للرسم غير الفعال عبر الشاشة بأكملها.
// تحسين العمق باستخدام Merge
// استخدم Merge بدلاً من LinearLayout المتداخلة
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="محتوى محسن" />
</merge>
لاستخدام View Hierarchy بفعالية، من الضروري معرفة كيفية تشغيل الأداة، وكيف التنقل في الشجرة وكيفية تصدير البيانات التي تم الحصول عليها للتحليل أو إعداد التقارير.
يتم تشغيل Layout Inspector من قائمة Tools → Layout Inspector في Android Studio. قبل التشغيل، يجب أن يكون التطبيق قيد التشغيل على جهاز متصل أو محاكي. بعد اختيار العملية، تظهر نافذة بثلاث لوحات: لقطة شاشة وشجرة View ولوحة خصائص المكون المحدد. للمحاكي بمستوى API 29 وما فوق، يتوفر وضع Live Update.
تُعرض شجرة View في اللوحة اليسرى كقائمة هرمية. يمكن توسيع وطي الحاويات، وكذلك النقر مباشرة على لقطة الشاشة — يتم تمييز المكون المقابل تلقائيًا في الشجرة. هذا مزامنة ثنائية الاتجاه: الاختيار في الشجرة يبرز العنصر على لقطة الشاشة والعكس صحيح. للبحث السريع، استخدم حقل Filter.
يمكن حفظ نتائج التفتيش بتنسيق .li (ملف Layout Inspector) للعرض لاحقًا أو المشاركة مع الزملاء. يحتوي الملف على معلومات كاملة عن شجرة View ولقطة الشاشة وجميع خصائص المكونات. للتصدير، استخدم زر Export في شريط أدوات Layout Inspector. يمكن فتح البيانات المصدرة على جهاز آخر مثبت عليه Android Studio للتحليل المشترك لمشاكل واجهة المستخدم.
الأسئلة الشائعة
يعمل Layout Inspector على الأجهزة التي تعمل بـ API Level 14 (Android 4.0) وما فوق. ومع ذلك، يتطلب وضع Live Update API Level 29 (Android 10) ومكتبة Layout Inspector في تبعيات gradle.
قد تكون بعض Views مخفية بسبب علامة تسريع الأجهزة أو تحسينات العرض. حاول تعطيل تسريع الأجهزة للنافذة في البيان أو تفعيل خيارات المطور على الجهاز. SurfaceView و TextureView أيضًا لا تظهر بالكامل.
يدعم محاكي Android بالكامل Layout Inspector، بما في ذلك Live Update على API 29+. تأكد من تشغيل المحاكي مع دعم Google Play Services. للمحاكيات بدون متجر Play، استخدم إصدار Debug من التطبيق.
Layout Inspector هي أداة للقراءة فقط للعرض والتحليل. لا يتم دعم التعديل المباشر للخصائص. لتغيير القيم، تحتاج إلى تعديل ملف التخطيط أو الكود وإعادة تشغيل التطبيق. توجد مكتبات طرف ثالث مثل Hyperion للتغييرات في وقت التشغيل.
View Hierarchy هي شجرة المكونات المفاهيمية، بينما Layout Inspector هو أداة Android Studio لتصورها وتحليلها. في الكلام اليومي، غالبًا ما تُستخدم هذه المصطلحات كمرادفات، ولكن تقنيًا تشير View Hierarchy إلى هيكل البيانات، بينما يشير Layout Inspector إلى الأداة.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا