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

Android LinearLayout 下 TableRow 寬度自適應屏幕:建議改用 ConstraintLayout 或 GridLayout

     編輯:程式設計綜合問答

問題

TableRow 內控件過多導致超出屏幕,期望自動縮放適應。

現代佈局方案

佈局適用場景自適應能力
ConstraintLayout複雜界面、響應式鏈式約束、比例、Guideline、Barrier 強大
GridLayout表格狀、行列固定layout_columnWeight / layout_rowWeight 均分
FlexboxLayout流式換行、標籤雲flexWrap / flexGrow 自動換行伸縮
TableLayout/TableRow簡單表格無權重機制,難以自適應

ConstraintLayout 示例:均分 4 列

<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 示例

<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(表格),利用權重/百分比實現真正自適應。

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