layout_gravity
和 weight
是 Android 中用于布局的兩個(gè)屬性,它們可以配合使用來(lái)實(shí)現(xiàn)復(fù)雜的布局需求。
layout_gravity
用于指定子視圖在其父布局中的位置。它有以下幾個(gè)值:
top
:子視圖位于父布局的頂部。bottom
:子視圖位于父布局的底部。left
:子視圖位于父布局的左側(cè)。right
:子視圖位于父布局的右側(cè)。center
:子視圖位于父布局的中心。fill
:子視圖填充整個(gè)父布局。center_horizontal
:子視圖在水平方向上居中。center_vertical
:子視圖在垂直方向上居中。weight
用于指定子視圖在其父布局中所占的權(quán)重。當(dāng)父布局的寬度或高度不足以容納所有子視圖時(shí),具有 weight
屬性的子視圖將占據(jù)剩余空間的比例與 weight
值成正比。
要配合使用 layout_gravity
和 weight
,可以按照以下步驟進(jìn)行:
match_parent
或 wrap_content
,以使其能夠擴(kuò)展并容納子視圖。layout_gravity
為 fill
。layout_gravity
為 center
或其他合適的位置。weight
值。例如,以下代碼將創(chuàng)建一個(gè)水平排列的線性布局,其中第一個(gè)子視圖將占據(jù)剩余空間的 50%,其余兩個(gè)子視圖將居中顯示:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="子視圖 1" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="子視圖 2" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="fill"
android:text="子視圖 3" />
</LinearLayout>
在這個(gè)例子中,第一個(gè)和第二個(gè)子視圖的寬度被設(shè)置為 0dp
,這意味著它們將根據(jù)可用空間進(jìn)行縮放。第三個(gè)子視圖的 layout_gravity
被設(shè)置為 fill
,因此它將填充整個(gè)父布局的寬度。由于第一個(gè)子視圖已經(jīng)占據(jù)了剩余空間的 50%,因此第三個(gè)子視圖將占據(jù)剩余的 50% 空間。