إنشاء تنسيق خطي

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

LinearLayout هو مجموعة مشاهدات تعمل على محاذاة كل الأطفال في اتجاه واحد، عموديًا أو أفقيًا. يمكنك تحديد اتجاه التنسيق باستخدام السمة android:orientation.

صورة تعرض تصميمًا مقسّمًا إلى ثلاث شرائح عمودية
الشكل 1. LinearLayout مع ثلاثة أطفال موجّهين أفقيًا.

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

وزن التصميم

تتيح السمة LinearLayout أيضًا تخصيص سمة weight للأطفال الفرديين باستخدام السمة android:layout_weight. تحدد هذه السمة قيمة "الأهمية" لأحد العروض من حيث المساحة التي تشغلها على الشاشة. تتيح قيمة الوزن الأكبر توسيعها لملء المساحة المتبقية في طريقة العرض الأصلية. يمكن أن تحدد طرق العرض الفرعية قيمة الوزن، ويتم تخصيص أي مساحة متبقية في مجموعة العرض للأطفال بشكل متناسب، بناءً على وزنهم المعلن. الوزن التلقائي هو صفر.

توزيع متساوي

لإنشاء تنسيق خطي يستخدم فيه كل عنصر ثانوي المساحة نفسها على الشاشة، اضبط android:layout_height لكل طريقة عرض على "0dp" لتنسيق رأسي، أو اضبط قيمة android:layout_width لكل عرض على "0dp" للحصول على تنسيق أفقي. بعد ذلك، اضبط القيمة android:layout_weight لكل ملف شخصي على القيمة ""1"".

توزيع غير متكافئ

يمكنك أيضًا إنشاء تخطيطات خطية تستخدم فيها العناصر الفرعية مساحات مختلفة على الشاشة. ضع في الاعتبار الأمثلة التالية:

  • لنفترض أنّ لديك ثلاثة حقول نصية: حقلان يتضمّنان قيمة الوزن 1، وثالثًا يتضمّن قيمة الوزن التلقائية 0. ولا يشغل الحقل النصي الثالث الذي تبلغ قيمة الوزن 0 سوى المساحة المطلوبة لمحتواه. يتم توسيع الحقلَين النصيَّين الآخرَين، وهما قيمة العرض 1، بشكل متساوٍ لملء المساحة المتبقية بعد قياس محتوى الحقول الثلاثة.
  • بدلاً من ذلك، إذا كان لديك ثلاثة حقول نصية تكون فيها قيمة الوزن 1 والحقل الثالث بوزن 2، سيتم تخصيص المسافة المتبقية بعد قياس محتوى الحقول الثلاثة على النحو التالي: نصف المساحة إلى الحقل بقيمة الوزن 2، ونقسم النصف بالتساوي بين الحقول التي تكون فيها قيمة الوزن 1.

يوضح مقتطف الرمز والشكل التالي كيفية عمل تقديرات التنسيق في نشاط "إرسال الرسالة". إنّ حقول إلى وسطر الموضوع وزر إرسال تشغل مساحة كل منها الارتفاع الذي تحتاجه فقط. وتشغل منطقة الرسالة بقية ارتفاع النشاط.

صورة تعرض ثلاثة نصوص تحريرية وزرًا في تنسيق خطي عمودي
الشكل 2. ثلاثة حقول نصية وزر في LinearLayout باتجاه عمودي.
<?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:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/subject" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message" />
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:text="@string/send" />
</LinearLayout>

للحصول على تفاصيل حول السمات المتاحة لكل ملف شخصي ثانوي في LinearLayout، يُرجى مراجعة LinearLayout.LayoutParams.