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

روش نوشتن را امتحان کنید
Jetpack Compose ابزار رابط کاربری پیشنهادی برای اندروید است. یاد بگیرید که چگونه با طرح‌بندی‌ها در Compose کار کنید.

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

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

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

وزن طرح‌بندی

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

توزیع برابر

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

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

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

  • فرض کنید سه فیلد متنی دارید: دو فیلد با مقدار وزن ۱ و فیلد سوم با مقدار وزن پیش‌فرض ۰. فیلد متنی سوم، با مقدار وزن ۰، فقط مساحت مورد نیاز محتوای خود را اشغال می‌کند. دو فیلد متنی دیگر، با مقدار وزن ۱، به طور مساوی گسترش می‌یابند تا فضایی را که پس از اندازه‌گیری محتوای هر سه فیلد باقی می‌ماند، پر کنند.
  • اگر به جای آن، سه فیلد متنی داشته باشید که دو تا از آنها وزن ۱ و سومی وزن ۲ داشته باشد، آنگاه فضایی که پس از اندازه‌گیری محتوای هر سه فیلد باقی می‌ماند به صورت زیر تخصیص داده می‌شود: نیمی به فیلدی با وزن ۲ و نیمی دیگر به طور مساوی بین فیلدهایی با وزن ۱ تقسیم می‌شود.

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

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