شاید برای طراحی Layout های ساده، LinearLayout خیلی کاربردی باشد ولی وقتی یکم Layout ها پیچیده می شوند کاربا LinearLayout سخت می شود و حتی در بعضی موارد performance هم پایینتر می آید. به همین دلیل در اکثر موارد توصیه می شود از RelativeLayout استفاده شود. برای مثال فرض کنیم می خواهیم Layout زیر را طراحی کنیم:
این Layout شامل یک ImageView و دو TexView می شود:
پیاده سازی این Layout با استفاده از LinearLayout بصورت زیر می شود:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="My Application" />
<TextView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="marquee"
android:text="Simple application that shows how to use RelativeLayout" />
</LinearLayout>
</LinearLayout>
اما پیاده سازی آن را RelativeLayout بصورت زیر می شود:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<TextView
android:id="@+id/secondLine"
android:layout_width="fill_parent"
android:layout_height="26dip"
android:layout_toRightOf="@id/icon"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:singleLine="true"
android:ellipsize="marquee"
android:text="Simple application that shows how to use RelativeLayout" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/icon"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_above="@id/secondLine"
android:layout_alignWithParentIfMissing="true"
android:gravity="center_vertical"
android:text="My Application" />
</RelativeLayout>
اگر از View که با LinearLayout پیاده سازی شده در یک لیست استفاده کنیم، ساختن یک شئ از آن به نسبت معادل پیاده سازی شده با RelativeLayout زمانبرتر (کندتر) خواهد بود و نمونه پیاده سازی شده با RelativeLayout یک سطح سلسله مراتب کمتر دارد و سریعتر render می شود.
منبع