TableRow 內控件過多導致超出屏幕,期望自動縮放適應。
| 佈局 | 適用場景 | 自適應能力 |
|---|---|---|
| ConstraintLayout | 複雜界面、響應式 | 鏈式約束、比例、Guideline、Barrier 強大 |
| GridLayout | 表格狀、行列固定 | layout_columnWeight / layout_rowWeight 均分 |
| FlexboxLayout | 流式換行、標籤雲 | flexWrap / flexGrow 自動換行伸縮 |
| TableLayout/TableRow | 簡單表格 | 無權重機制,難以自適應 |
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button android:id="@+id/btn1" android:text="1"
app:layout_constraintWidth_percent="0.25"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button android:id="@+id/btn2" android:text="2"
app:layout_constraintWidth_percent="0.25"
app:layout_constraintStart_toEndOf="@id/btn1"
app:layout_constraintTop_toTopOf="parent" />
<Button android:id="@+id/btn3" android:text="3"
app:layout_constraintWidth_percent="0.25"
app:layout_constraintStart_toEndOf="@id/btn2"
app:layout_constraintTop_toTopOf="parent" />
<Button android:id="@+id/btn4" android:text="4"
app:layout_constraintWidth_percent="0.25"
app:layout_constraintStart_toEndOf="@id/btn3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:rowCount="1">
<Button android:text="1" android:layout_columnWeight="1" />
<Button android:text="2" android:layout_columnWeight="1" />
<Button android:text="3" android:layout_columnWeight="1" />
<Button android:text="4" android:layout_columnWeight="1" />
</GridLayout>
**棄用 TableLayout/TableRow**,改用 ConstraintLayout(通用)或 GridLayout(表格),利用權重/百分比實現真正自適應。