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

Android ListView 與頂部控件聯動滑動的兩種方案

     編輯:程式設計疑難解答

場景

頁面頂部有固定控件(如搜索欄、Banner),下方為 ListView,需整體滑動。

方案一:addHeaderView(推薦)

View header = LayoutInflater.from(this).inflate(R.layout.header_layout, listView, false);
listView.addHeaderView(header);
// header 會隨列表項一起滾動,自動參與回收機制
  • 優點:原生支持,無嵌套滑動衝突,性能最好。
  • 注意:必須在 setAdapter 前調用。

方案二:外層 ScrollView 包裹(不推薦)

<ScrollView ...>
    <LinearLayout android:orientation="vertical" ...>
        <!-- 頂部控件 -->
        <ListView android:id="@+id/listView" ... />
    </LinearLayout>
</ScrollView>
  • 需手動計算 ListView 高度並展開(setListViewHeightBasedOnChildren)。
  • 缺點:破壞 ListView 視圖回收,所有項一次性渲染,內存爆增,嚴禁用於長列表。

最佳實踐

優先使用 addHeaderView;若頂部極其複雜需獨立滑動,考慮 RecyclerView + ConcatAdapter (AndroidX) 實現多類型 Item。

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