官术网_书友最值得收藏!

Linear and relative layout classes

The linear layout is relatively lightweight and very useful for layouts based on single rows or columns. However, more complex layouts require nesting layouts inside each other and this very quickly becomes resource hungry. Take a look at the following layout:

Nested linear layouts

The preceding layout was built using only linear layouts, as can be seen from the following Component Tree:

The component tree

Although perfectly workable and easy to understand, this layout is not as efficient as it could be. Even a single extra layer of layout nesting will have an impact on performance. Prior to the constraint layout, this problem was solved with the relative layout.

As the name suggests, the relative layout allows us to place screen components in relation to each other, using markup such as layout_toStartOf or layout_below. This allows us to flatten view hierarchies and the preceding layout could be recreated with just one single relative, root viewgroup. The following code demonstrates how the row of images in the previous layout can be generated without nesting any new layouts:

<ImageView 
android:id="@+id/image_header_1"
android:layout_width="128dp"
android:layout_height="128dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/text_title"
app:srcCompat="@drawable/pizza_01" />

<ImageView
android:id="@+id/image_header_2"
android:layout_width="128dp"
android:layout_height="128dp"
android:layout_below="@+id/text_title"
android:layout_toEndOf="@+id/image_header_1"
app:srcCompat="@drawable/pizza_02" />

<ImageView
android:id="@+id/image_header_3"
android:layout_width="128dp"
android:layout_height="128dp"
android:layout_alignParentEnd="true"
android:layout_below="@+id/text_title"
app:srcCompat="@drawable/pizza_03" />

<ImageView
android:id="@+id/image_header_4"
android:layout_width="128dp"
android:layout_height="128dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/text_title"
app:srcCompat="@drawable/pizza_04" />

Even if you are new to Android Studio, it is assumed that you will be familiar with linear and relative layouts. It is less likely that you will have encountered the constraint layout, which has been especially developed for Studio to alleviate the shortcomings of these older approaches.

In the previous examples, we used app:srcCompat as opposed to android:src. This is not strictly required here, but if we wished to apply any tinting to the image and hope to distribute the app for older Android versions, this choice will enable that.
主站蜘蛛池模板: 米脂县| 铜川市| 高陵县| 安陆市| 新兴县| 中山市| 周口市| 安吉县| 英超| 吴忠市| 沂源县| 黑山县| 前郭尔| 囊谦县| 通化县| 墨竹工卡县| 龙口市| 黄大仙区| 黔江区| 黑河市| 嵩明县| 普洱| 瑞金市| 库尔勒市| 土默特右旗| 定陶县| 定结县| 五大连池市| 宜宾县| 简阳市| 临清市| 石景山区| 二连浩特市| 香河县| 方山县| 固安县| 阿图什市| 麻栗坡县| 周至县| 日照市| 封丘县|