在 Android 中實現 3 個 Button 等寬佔滿一行,核心是使用 LinearLayout 配合 layout_weight="1" 和 layout_width="0dp" (或 match_parent 配合 weight)。
<!-- 可選:顯式聲明權重總和 -->
layout_width="0dp":基礎寬度為 0,完全由 weight 決定layout_weight="1":分配剩余空間的權重,相同值即等寬weightSum="3":可選,顯式指定總權重,防止子視圖 weight 異常影響
LinearLayout container = new LinearLayout(this);
container.setOrientation(LinearLayout.HORIZONTAL);
container.setWeightSum(3);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f); // width=0, weight=1
for (int i = 0; i < 3; i++) {
Button btn = new Button(this);
btn.setText("按鈕 " + (i+1));
btn.setLayoutParams(params);
container.addView(btn);
}
| 錯誤寫法 | 後果 | 修正 |
|---|---|---|
| layout_width="wrap_content" + weight | 先按內容寬度,再分配剩余,不等寬 | 改為 0dp |
| layout_width="match_parent" + weight | 每個佔滿父寬度,擠出屏幕 | 改為 0dp |
| 忘記 orientation="horizontal" | 垂直排列,weight 分配高度 | 添加屬性 |
優勢:扁平層級、支持指引線、百分比、鏈式佈局等高級功能。