TableRow 中四個 TextView:Date、Course Name、Duration、Cost。需求:前兩欄置中,後兩欄靠右對齊。直接在 TextView 設 layout_gravity="right" 無效,因 TableRow 強制子 View 佔滿單元格寬度。
<TableRow>
<TextView ... android:text="Date" />
<TextView ... android:text="Course Name" />
<TextView android:layout_width="0dp"
android:layout_weight="1" /> <!-- 彈性佔位,推後兩欄靠右 -->
<TextView ... android:text="Duration" android:gravity="end" />
<TextView ... android:text="Cost" android:gravity="end" />
</TableRow>
原理:中間的空 TextView 配合 layout_weight="1" 佔據剩餘空間,迫使後兩欄貼齊右側。
<TableRow>
<TextView ... android:layout_weight="1" android:gravity="center" />
<TextView ... android:layout_weight="1" android:gravity="center" />
<TextView ... android:layout_weight="1" android:gravity="end" />
<TextView ... android:layout_weight="1" android:gravity="end" />
</TableRow>
所有欄位等寬,再用 gravity 控制文字在單元格內對齊方式。
| 屬性 | 作用對象 | 適用場景 |
|---|---|---|
layout_gravity | View 在父容器中的位置 | LinearLayout、FrameLayout 子 View |
gravity | View 內容(文字)在 View 內的位置 | TextView、Button 等內容對齊 |
layout_weight | 分配剩餘空間比例 | LinearLayout、TableRow 子 View |
TableRow 內請用 gravity + layout_weight,勿用 layout_gravity。