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 مراجعه کنید.