مورد التنسيق

يحدّد مورد التنسيق بنية واجهة المستخدم في Activity أو أحد مكوِّنات واجهة المستخدم.

موقع الملف:
res/layout/filename.xml
يتم استخدام اسم الملف كرقم تعريف المورد.
نوع بيانات المورد المجمّع:
مؤشر المورد إلى مورد View (أو فئة فرعية)
مرجع للموارد:
في لغة Java: R.layout.filename
في ملف XML: @[package:]layout/filename
بناء الجملة:
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>

ملاحظة: يمكن أن يكون العنصر الجذر عبارة عن ViewGroup أو View أو عنصر <merge> ولكن لا يمكن أن يكون هناك سوى عنصر جذر واحد ويجب أن يحتوي على السمة xmlns:android مع مساحة الاسم android كما هو موضّح في مثال البنية السابق.

العناصر:
<ViewGroup>
حاوية لعناصر View أخرى تتوفر أنواع مختلفة من كائنات ViewGroup، ويتيح لك كل نوع تحديد تنسيق العناصر الفرعية بطرق مختلفة. وتشمل الأنواع المختلفة لكائنات ViewGroup LinearLayout وRelativeLayout وFrameLayout.

ولا تفترض أنّ أي مشتقات من ViewGroup تقبل طرق العرض المتداخلة. بعض مجموعات الملفات الشخصية هي عمليات تنفيذ لفئة AdapterView، والتي تحدّد عناصرها الثانوية فقط من Adapter.

السمات:

android:id
رقم تعريف المورد. اسم مورد فريد للعنصر، والذي يمكنك استخدامه للحصول على مرجع إلى ViewGroup من التطبيق. لمزيد من المعلومات، يُرجى الاطّلاع على القسم قيمة android:id.
android:layout_height
السمة أو الكلمة الرئيسية: مَعلمة مطلوبة. ارتفاع المجموعة، في صورة قيمة سمة (أو مورد سمة) أو كلمة رئيسية ("match_parent" أو "wrap_content"). لمزيد من المعلومات، يُرجى الاطّلاع على القسم قيم android:lookup_height وandroid:Layout_width.
android:layout_width
السمة أو الكلمة الرئيسية: مَعلمة مطلوبة. عرض المجموعة، في صورة قيمة سمة (أو مورد سمة) أو كلمة رئيسية ("match_parent" أو "wrap_content"). لمزيد من المعلومات، يُرجى الاطّلاع على القسم قيم android:lookup_height وandroid:lookup_width.

تتوافق الفئة الأساسية ViewGroup مع المزيد من السمات، ويمكن استخدام المزيد من السمات الأخرى في كل عملية تنفيذ للسمة ViewGroup. وللحصول على مرجع لجميع السمات المتاحة، يمكنك الاطّلاع على المستندات المرجعية المناسبة للفئة ViewGroup، على سبيل المثال، سمات XML الخاصة بـ LinearLayout.

<View>
مكوّن فردي لواجهة المستخدم، يُشار إليه عمومًا باسم التطبيق المصغَّر. وتشمل الأنواع المختلفة لكائنات View TextView وButton وCheckBox.

السمات:

android:id
رقم تعريف المورد. تمثّل هذه السمة اسم مورد فريدًا للعنصر، يمكنك استخدامه للحصول على مرجع إلى View من تطبيقك. لمزيد من المعلومات، يُرجى الاطّلاع على القسم قيمة android:id.
android:layout_height
السمة أو الكلمة الرئيسية: مَعلمة مطلوبة. ارتفاع العنصر، على هيئة قيمة سمة (أو مورد سمة) أو كلمة رئيسية ("match_parent" أو "wrap_content"). لمزيد من المعلومات، يُرجى الاطّلاع على القسم قيم android:lookup_height وandroid:Layout_width.
android:layout_width
السمة أو الكلمة الرئيسية: مَعلمة مطلوبة. عرض العنصر، كقيمة بُعد (أو مورد سمة) أو كلمة رئيسية ("match_parent" أو "wrap_content"). لمزيد من المعلومات، راجع القسم قيم android:lookup_height وandroid:Layout_width.

تتوافق الفئة الأساسية View مع المزيد من السمات، ويمكن استخدام المزيد من السمات الأخرى في كل عملية تنفيذ للسمة View. لمزيد من المعلومات، يُرجى الاطّلاع على التنسيقات. للاطّلاع على مرجع لكل السمات المتاحة، يمكنك مراجعة المستندات المرجعية المناسبة، على سبيل المثال، سمات XML TextView.

<requestFocus>
يمكن أن يشتمل أي عنصر يمثّل عنصر View على هذا العنصر الفارغ، ما يركِّز بشكل أساسي على العنصر الأساسي على الشاشة. يمكن أن يكون لديك عنصر واحد فقط من هذه العناصر في كل ملف.
<include>
تتضمّن ملف تنسيق في هذا التنسيق.

السمات:

layout
مورد التنسيق. مَعلمة مطلوبة. الإشارة إلى مورد تخطيط.
android:id
رقم تعريف المورد. لإلغاء المعرف المقدم للعرض الجذر في التنسيق المضمن.
android:layout_height
السمة أو الكلمة الرئيسية: لإلغاء الارتفاع المحدد للعرض الجذر في التخطيط المضمّن. يسري هذا الإجراء فقط إذا تم تضمين السمة android:layout_width أيضًا.
android:layout_width
السمة أو الكلمة الرئيسية: لإلغاء العرض المقدم للعرض الجذر في التخطيط المضمن. يسري هذا الإجراء فقط إذا تم تضمين السمة android:layout_height أيضًا.

يمكنك تضمين أي سمات تنسيق أخرى في <include> متوافقة مع العنصر الجذر في التنسيق المضمّن وتلغي تلك السمات المحدّدة في العنصر الجذر.

تنبيه: إذا أردت إلغاء سمات التنسيق باستخدام العلامة <include>، عليك إلغاء كلاً من android:layout_height وandroid:layout_width لكي يتم تطبيق سمات التنسيق الأخرى.

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

<merge>
عنصر جذر بديل لم يتم رسمه في التسلسل الهرمي للتنسيق. من المفيد استخدام هذا كعنصر الجذر عندما تعلم أنّ هذا التنسيق قد تم وضعه في تنسيق يحتوي بالفعل على العنصر الرئيسي View المناسب لاحتواء عناصر <merge> الثانوية.

يُعدّ هذا الإجراء مفيدًا بشكل خاص عندما تخطّط لتضمين هذا التنسيق في ملف تنسيق آخر باستخدام <include> ولا يتطلّب هذا التنسيق حاوية ViewGroup مختلفة. لمزيد من المعلومات حول دمج التنسيقات، يُرجى الاطّلاع على إعادة استخدام التنسيقات مع <include>.

قيمة android:id

بالنسبة إلى قيمة المعرّف، يتم عادةً استخدام نموذج البنية هذا: "@+id/name"، كما هو موضّح في المثال التالي. يشير رمز علامة الجمع + إلى أنّ هذا معرّف مورد جديد، وتنشئ أداة aapt عددًا صحيحًا جديدًا من الموارد في الفئة R.java، في حال لم يكن متوفّرًا حاليًا.

<TextView android:id="@+id/nameTextbox"/>

أصبح اسم nameTextbox الآن معرِّف مورد مرفق بهذا العنصر. يمكنك بعد ذلك الرجوع إلى TextView الذي يرتبط به رقم التعريف في Java:

Kotlin

val textView: TextView? = findViewById(R.id.nameTextbox)

Java

TextView textView = findViewById(R.id.nameTextbox);

ويعرض هذا الرمز العنصر TextView.

إذا سبق لك تحديد مورد المعرّف ولم يكن مستخدَمًا من قبل، يمكنك تطبيق هذا المعرّف على عنصر View من خلال استبعاد رمز علامة الجمع في القيمة android:id.

قيم android:format_height وandroid:اخترتها_width

يتم التعبير عن قيم الارتفاع والعرض باستخدام أيٍّ من وحدات السمات المتوافقة مع نظام التشغيل Android (px, dp, sp, pt, in, mm) أو باستخدام الكلمات الرئيسية التالية:

القيمةالوصف
match_parent لضبط السمة لتطابق العنصر الرئيسي. تمت إضافتها في المستوى 8 من واجهة برمجة التطبيقات لإيقاف fill_parent.
wrap_content لتعيين البُعد فقط على الحجم المطلوب ليلائم محتوى هذا العنصر.

عناصر العرض المخصّصة

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

مثلا:
تم حفظ ملف XML في res/layout/main_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

يُحمِّل رمز التطبيق هذا تنسيق Activity في طريقة onCreate():

Kotlin

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
}

Java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}
راجِع أيضًا: