首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android TableLayout 對齊技巧:讓指定欄位靠右、其餘置中

     編輯:程式設計綜合問答

問題場景

TableRow 中四個 TextView:Date、Course Name、Duration、Cost。需求:前兩欄置中,後兩欄靠右對齊。直接在 TextView 設 layout_gravity="right" 無效,因 TableRow 強制子 View 佔滿單元格寬度。

解法一:插入隱形佔位 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" 佔據剩餘空間,迫使後兩欄貼齊右側。

解法二:統一 weight 讓所有欄等寬置中

<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_gravityView 在父容器中的位置LinearLayout、FrameLayout 子 View
gravityView 內容(文字)在 View 內的位置TextView、Button 等內容對齊
layout_weight分配剩餘空間比例LinearLayout、TableRow 子 View

TableRow 內請用 gravity + layout_weight,勿用 layout_gravity。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved