یک طرح خطی ایجاد کنید

روش Compose را امتحان کنید
Jetpack Compose جعبه ابزار UI توصیه شده برای اندروید است. نحوه کار با طرح‌بندی‌ها در Compose را بیاموزید.

LinearLayout یک گروه نمایش است که همه کودکان را در یک جهت، عمودی یا افقی تراز می کند. می توانید جهت طرح را با ویژگی android:orientation مشخص کنید.

تصویری که یک طرح بندی را به سه برش عمودی تقسیم می کند
شکل 1. LinearLayout با سه کودک جهت افقی.

همه فرزندان یک LinearLayout پشت سر هم قرار می گیرند، بنابراین یک لیست عمودی فقط یک فرزند در هر سطر دارد، مهم نیست چقدر گسترده باشند. یک لیست افقی فقط یک ردیف ارتفاع دارد و قد بلندترین کودک به اضافه بالشتک است. یک LinearLayout به حاشیه‌های بین کودکان و گرانش - تراز راست، مرکز یا چپ - هر کودک احترام می‌گذارد.

وزن طرح

LinearLayout همچنین از اختصاص وزن به تک تک کودکان با ویژگی android:layout_weight پشتیبانی می کند. این ویژگی یک مقدار "اهمیت" را به یک نما بر حسب میزان فضایی که روی صفحه اشغال می کند، اختصاص می دهد. یک مقدار وزن بزرگتر به آن اجازه می دهد تا فضای باقی مانده در نمای والد را پر کند. نماهای کودک می توانند مقدار وزن را مشخص کنند و هر فضای باقیمانده در گروه نمایش به تناسب بر اساس وزن اعلام شده آنها به کودکان اختصاص داده می شود. وزن پیش فرض صفر است.

توزیع برابر

برای ایجاد یک طرح‌بندی خطی که در آن هر کودک از فضای مشابهی روی صفحه استفاده می‌کند، android:layout_height هر نما را برای یک طرح عمودی روی "0dp" یا android:layout_width هر نما را روی "0dp" برای یک نما تنظیم کنید. طرح افقی سپس android:layout_weight هر نما را روی "1" تنظیم کنید.

توزیع نابرابر

همچنین می‌توانید طرح‌بندی‌های خطی ایجاد کنید که در آن عناصر فرزند از فضای متفاوتی روی صفحه استفاده کنند. به مثال های زیر توجه کنید:

  • فرض کنید شما سه فیلد متنی دارید: دو فیلد با وزن 1، و فیلد سوم با مقدار وزن پیش فرض 0. فیلد متنی سوم، با مقدار وزن 0، تنها ناحیه مورد نیاز محتوای آن را اشغال می کند. دو فیلد متنی دیگر، با مقدار وزن 1، به طور مساوی گسترش می یابند تا فضای باقیمانده پس از اندازه گیری محتویات هر سه فیلد را پر کنند.
  • اگر در عوض سه فیلد متنی دارید که دو فیلد دارای وزن 1 و سومی دارای وزن 2 است، فضایی که پس از اندازه گیری محتویات هر سه فیلد باقی می ماند به صورت زیر اختصاص داده می شود: نصف فیلد با وزن مقدار 2 و نصف به طور مساوی بین فیلدهایی با مقدار وزن 1 تقسیم می شود.

شکل زیر و قطعه کد نشان می‌دهد که وزن طرح‌بندی چگونه ممکن است در فعالیت «ارسال پیام» کار کند. فیلد To ، خط موضوع و دکمه Send هر کدام فقط ارتفاع مورد نیاز خود را می گیرند. ناحیه پیام بقیه ارتفاع فعالیت را اشغال می کند.

تصویری که سه EditText و یک دکمه را در یک LinearLayout عمودی گرا نشان می دهد
شکل 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 مراجعه کنید.