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

Android TableLayout 固定表頭滾動內容:使用 LinearLayout + weight 替代對齊

     編輯:程式設計綜合問答

問題現象

兩個獨立 TableLayout (表頭 + 內容) 導致欄寬無法對齊,表頭固定、內容可滾動需求難以實現。

方案一:LinearLayout + layout_weight 統一欄寬(推薦)

將表頭與內容行統一使用 LinearLayout (horizontal) + layout_weight="1",確保欄寬完全一致:




    
    
    ...




    
        
        
            
            
            ...
        
    

方案二:單一 TableLayout + header 不滾動 (API 14+)

利用 TableLayout 內建表頭固定(需自定義或第三方庫),較複雜不推薦手寫。

方案三:RecyclerView + Sticky Header (現代標準)


// 使用 RecyclerView + Sectioned Adapter / StickyHeaderDecoration
// 表頭作為 Header View,內容為 Item,滾動時 Header 吸頂
// 庫推薦: sticky-headers-recyclerview, Groupie

關鍵技巧:0dp + weight=1 強制等寬

  • layout_width="0dp" + layout_weight="1" → 該欄佔據剩餘空間的等比例份額。
  • 所有行 (含表頭) 使用相同權重組合,欄寬天然對齊。
  • 無需計算像素、無需監聽佈局變化、相容各螢幕尺寸。

避坑指南

  • 兩個獨立 TableLayout 永遠無法完美對齊:各自獨立測量佈局。
  • TableLayout 不支援原生固定表頭:需複雜自定義 View。
  • 新專案優先 RecyclerView:效能優、擴充性強、支援動畫/分頁/吸頂。

掌握 LinearLayout + weight 等寬佈局鐵律,是解決表格對齊、固定表頭、響應式欄寬的核心技能。

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