在 LinearLayout 中對某 Button 設定:
android:paddingRight="10dp"
android:paddingBottom="10dp"
導致該按鈕顯示尺寸與其他按鈕不一致(見截圖)。
LinearLayout 按子視圖的 MeasureSpec 依序測量排版。padding 會增加視圖的內部邊距,進而影響其測量寬高。若各按鈕 padding 不同,或僅部分按鈕設定,最終顯示大小自然不同。
GridLayout 將子視圖放入網格儲存格,每個儲存格大小一致,按鈕自動填滿儲存格,padding 僅影響內部文字位置,不改變按鈕外框尺寸。
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:rowCount="1">
<Button android:text="A" android:layout_gravity="fill" />
<Button android:text="B" android:layout_gravity="fill"
android:paddingRight="10dp" android:paddingBottom="10dp" />
<Button android:text="C" android:layout_gravity="fill" />
<Button android:text="D" android:layout_gravity="fill" />
</GridLayout>
android:layout_gravity="fill" 讓按鈕填滿儲存格。
padding 或 minWidth/minHeight。layout_weight="1" 配合 layout_width="0dp" 強制等寬,並在按鈕內部用 Gravity 控制文字位置。

需固定尺寸的網格型介面(如計算機鍵盤、功能表),優先選 GridLayout 或 ConstraintLayout,避免手動微調 padding/margin。