文章目錄
- **1. 常用取值**
- **示例**
- **2. `layout_gravity`(控制 View 在父容器中的對齊方式)**
- **常用取值**
- **示例**
- **3. `gravity` vs `layout_gravity` 對比**
- **4. 注意事項**
- **5. 總結**

作用對象:當前 View 的內部內容(如 TextView 的文本、Button 的文字、LinearLayout 的子控件等)。
適用控件:TextView
、Button
、LinearLayout
、RelativeLayout
等幾乎所有 View。
1. 常用取值
值 | 說明 |
---|---|
left / start | 左對齊(start 適配 RTL 布局) |
right / end | 右對齊(end 適配 RTL 布局) |
top | 頂部對齊 |
bottom | 底部對齊 |
center | 水平 + 垂直居中 |
center_horizontal | 水平居中 |
center_vertical | 垂直居中 |
fill / fill_horizontal / fill_vertical | 填充(較少使用) |
示例
<!-- TextView 的文本居中 -->
<TextViewandroid:layout_width="200dp"android:layout_height="100dp"android:text="Hello World"android:gravity="center" /> <!-- 文本在 TextView 內部居中 --><!-- LinearLayout 的子控件垂直居中 -->
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="200dp"android:gravity="center_vertical"> <!-- 所有子控件垂直居中 --><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 1" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 2" />
</LinearLayout>
2. layout_gravity
(控制 View 在父容器中的對齊方式)
作用對象:當前 View 在其父容器 中的位置(如 Button 在 LinearLayout 中的對齊方式)。
適用控件:主要用于 LinearLayout
、FrameLayout
的子控件(RelativeLayout
和 ConstraintLayout
一般不用)。
常用取值
值 | 說明 |
---|---|
left / start | 靠左(start 適配 RTL) |
right / end | 靠右(end 適配 RTL) |
top | 靠頂部 |
bottom | 靠底部 |
center | 居中 |
center_horizontal | 水平居中 |
center_vertical | 垂直居中 |
fill_horizontal | 水平填充(拉伸) |
fill_vertical | 垂直填充(拉伸) |
示例
<!-- FrameLayout 中的 Button 居中 -->
<FrameLayoutandroid:layout_width="match_parent"android:layout_height="200dp"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Click Me"android:layout_gravity="center" /> <!-- Button 在 FrameLayout 中居中 -->
</FrameLayout><!-- LinearLayout 中的 Button 靠右 -->
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 1" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button 2"android:layout_gravity="end" /> <!-- Button 2 靠右 -->
</LinearLayout>
3. gravity
vs layout_gravity
對比
屬性 | 作用對象 | 適用場景 | 示例 |
---|---|---|---|
gravity | 當前 View 的內部內容 | TextView 文本居中、LinearLayout 子控件對齊 | android:gravity="center" |
layout_gravity | 當前 View 在其父容器中的位置 | Button 在 FrameLayout 居中、View 在 LinearLayout 靠右 | android:layout_gravity="center" |
4. 注意事項
-
layout_gravity
在LinearLayout
中的限制:- 如果
LinearLayout
是horizontal
方向,layout_gravity
只能控制 垂直方向(top
/bottom
/center_vertical
)。 - 如果
LinearLayout
是vertical
方向,layout_gravity
只能控制 水平方向(left
/right
/center_horizontal
)。
- 如果
-
ConstraintLayout
替代方案:-
ConstraintLayout
一般不使用layout_gravity
,而是用app:layout_constraintXXX_toXXXOf="parent"
控制位置:<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
-
-
gravity
和layout_gravity
可以組合使用:<LinearLayoutandroid:layout_width="match_parent"android:layout_height="200dp"android:gravity="center"> <!-- 子控件整體居中 --><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button"android:layout_gravity="end" /> <!-- 但 Button 自己靠右 --> </LinearLayout>
5. 總結
gravity
→ 控制 當前 View 內部 的對齊(如文本、子控件)。layout_gravity
→ 控制 當前 View 在父容器 中的對齊(如 Button 在 LinearLayout 中的位置)。LinearLayout
方向影響layout_gravity
的有效方向。ConstraintLayout
用約束替代layout_gravity
。
掌握這兩個屬性可以更靈活地控制 Android 布局! 🚀
在 Android 布局中,layout_weight
是用于 LinearLayout 的一個屬性,它允許子視圖按照權重(weight)分配剩余空間,常用于實現比例布局(如按比例分配寬度或高度)。