چیدمان نسبی

امتحان کردن روش «نوشتن»
‫Jetpack Compose جعبه‌ابزار واسط کاربر توصیه‌شده برای Android است. با نحوه کار کردن با چیدمان‌ها در «نوشتن» آشنا شوید.

‫RelativeLayout گروه نمایشی است که نماهای فرزند را در موقعیت‌های نسبی نمایش می‌دهد. موقعیت هر نما می‌تواند نسبت‌به عناصر هم‌سطح (مثل سمت چپ یا زیر نمای دیگر) یا در موقعیت‌های نسبی نسبت‌به ناحیه RelativeLayout والد (مثل تراز با پایین، چپ، یا مرکز) مشخص شود.

توجه: برای عملکرد بهتر و پشتیبانی ابزار، بهتر است چیدمانتان را با ConstraintLayout بسازید.

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

بازدیدهای جایگاه

RelativeLayout به نماهای کودک اجازه می‌دهد موقعیت خود را نسبت به نمای والد یا نسبت به یکدیگر (مشخص‌شده با شناسه) مشخص کنند. بنابراین می‌توانید دو عنصر را با حاشیه راست تراز کنید، یا یکی را زیر دیگری در مرکز صفحه، در مرکز چپ، و غیره قرار دهید. به‌طور پیش‌فرض، همه نماهای فرزند در بالا سمت راست چیدمان رسم می‌شوند، بنابراین باید موقعیت هر نما را بااستفاده از دارایی‌های چیدمان مختلف موجود در RelativeLayout.LayoutParams تعریف کنید.

برخی‌از ویژگی‌های چیدمان فراوانی که برای نماها در RelativeLayout دردسترس است شامل این موارد می‌شود:

android:layout_alignParentTop
اگر "true"، لبه بالای این نما را با لبه بالای عنصر والد مطابقت می‌دهد.
android:layout_centerVertical
اگر "true"، این کودک را به‌صورت عمودی در والدش در مرکز قرار می‌دهد.
android:layout_below
لبه بالای این نما را زیر نمایی که با شناسه منبع مشخص شده است قرار می‌دهد.
android:layout_toRightOf
لبه سمت چپ این نما را در سمت راست نمای مشخص‌شده با شناسه منبع قرار می‌دهد.

این‌ها فقط چند نمونه هستند. همه مشخصه‌های چیدمان در RelativeLayout.LayoutParams مستند شده است.

مقدار هر دارایی چیدمان یا مقدار بولی برای فعال کردن موقعیت چیدمان نسبت‌به RelativeLayout ولی یا شناسه است که نمای دیگری را در چیدمان ارجاع می‌دهد که نما باید نسبت‌به آن قرار گیرد.

در چیدمان XML، وابستگی‌ها به نماهای دیگر در چیدمان را می‌توان به هر ترتیبی اعلام کرد. برای مثال، می‌توانید اعلام کنید که «view1» در زیر «view2» قرار گیرد، حتی اگر «view2» آخرین نمای اعلام‌شده در سلسله‌مراتب باشد. مثال زیر چنین سناریویی را نشان می‌دهد.

مثال

هریک از مشخصه‌هایی که موقعیت نسبی هر نما را کنترل می‌کنند تأکید شده‌اند.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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" >
    <EditText
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/reminder" />
    <Spinner
        android:id="@+id/dates"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/times" />
    <Spinner
        android:id="@id/times"
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
        android:layout_alignParentRight="true" />
    <Button
        android:layout_width="96dp"
        android:layout_height="wrap_content"
        android:layout_below="@id/times"
        android:layout_alignParentRight="true"
        android:text="@string/done" />
</RelativeLayout>

برای جزئیات مربوط به همه مشخصه‌های چیدمان دردسترس برای هر نمای فرزند RelativeLayout، به RelativeLayout.LayoutParams مراجعه کنید.