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

Android 佈局:LinearLayout 實現 TextView 垂直排列換行顯示

     編輯:程式設計綜合問答

問題現象

開發者使用 LinearLayout 容器但設置 android:orientation="horizontal",導致多個 TextView 水平排列擠在一行,需求是每個文本佔據獨立一行垂直排列。

核心解決方案:修改 orientation 為 vertical

<LinearLayout
    android:id="@+id/widget38"
    xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:orientation="vertical"  >  <!-- 關鍵修改:horizontal -> vertical -->
    
    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:textSize="30sp" />
    
    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp" />
    
    <TextView
        android:id="@+id/text_separator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" - "
        android:textSize="30sp" />
    
    <TextView
        android:id="@+id/text3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp" />
    
    <TextView
        android:id="@+id/text4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp" />
</LinearLayout>

關鍵屬性說明

屬性值效果
android:orientationvertical子視圖垂直排列(從上到下),每行一個
android:orientationhorizontal子視圖水平排列(從左到右),同一行
android:layout_widthmatch_parent佔滿父容器寬度,文本可靠左/居中/靠右
android:layout_heightwrap_content高度自適應文本內容

進階:單個 TextView 實現多行文本(減少視圖層級)

若文本內容固定格式(如「姓名 時間 星期」),可用單個 TextView 配合 \n 換行符:

<TextView
    android:id="@+id/tv_combined"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:lineSpacingExtra="4dp" />  <!-- 行間距 -->
String combinedText = "隨機名稱\n10.20 - 11.30\nMonday\ntue";
textView.setText(combinedText);
// 或從 strings.xml 獲取格式化字符串

替代方案:ConstraintLayout 精確控制

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    
    <TextView android:id="@+id/tv1" 
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
    <TextView android:id="@+id/tv2" 
        app:layout_constraintTop_toBottomOf="@id/tv1"
        app:layout_constraintStart_toStartOf="parent" />
    <TextView android:id="@+id/tv3" 
        app:layout_constraintTop_toBottomOf="@id/tv2"
        app:layout_constraintStart_toStartOf="parent" />
    <TextView android:id="@+id/tv4" 
        app:layout_constraintTop_toBottomOf="@id/tv3"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

常見錯誤避坑

  • ❌ LinearLayout 缺少 orientation 屬性(默認 horizontal)
  • ❌ 子視圖 layout_width="match_parent" 但父容器未設置寬度
  • ❌ 重複的 android:id(示例中 text6 出現兩次)
  • ❌ TextView 設置 android:orientation(TextView 不支持此屬性)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved