مورد التنسيق

يحدّد مورد التصميم بنية واجهة المستخدم في 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:layout_height android:layout_width.
android:layout_width
السمة أو الكلمة الرئيسية. مَعلمة مطلوبة. يُعد عرض المجموعة، قيمة البُعد (أو مصدر السمة) أو كلمة رئيسية ("match_parent" أو "wrap_content") لمزيد من المعلومات شاهد قيم android:layout_height android:layout_width.

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

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

السمات:

android:id
رقم تعريف المورد. اسم مورد فريد للعنصر، يمكنك استخدامه الحصول على مرجع إلى View من تطبيقك. لمزيد من المعلومات، المعلومات، راجِع القسم قيمة android:id.
android:layout_height
السمة أو الكلمة الرئيسية. مَعلمة مطلوبة. يُعد ارتفاع العنصر، حيث قيمة بُعد (أو مصدر السمة) أو كلمة رئيسية ("match_parent" أو "wrap_content") لمزيد من المعلومات شاهد قيم android:layout_height android:layout_width.
android:layout_width
السمة أو الكلمة الرئيسية. مَعلمة مطلوبة. يُعد عرض العنصر، مثل قيمة بُعد (أو مصدر السمة) أو كلمة رئيسية ("match_parent" أو "wrap_content") لمزيد من المعلومات شاهد قيم android:layout_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:layout_height و android:layout_width

يتم التعبير عن قيم الارتفاع والعرض باستخدام أي من سمة الوحدات المتوافقة مع Android (بكسل أو dp أو sp أو pt أو بوصة أو ملم) أو باستخدام الكلمات الرئيسية التالية:

القيمةالوصف
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);
}
راجِع أيضًا: