淘寶 App 頂部固定按鈕區域,下拉時列表內容上浮,按鈕區域保持固定或隨列表滑動,典型的「HeaderView + ListView/RecyclerView」組合模式。
View header = LayoutInflater.from(context).inflate(R.layout.header_layout, listView, false);
listView.addHeaderView(header);
// header 會隨列表一起滑動,置頂需配合 OnScrollListener 判斷位置
// Adapter 重寫 getItemViewType
@Override
public int getItemViewType(int position) {
return position == 0 ? TYPE_HEADER : TYPE_ITEM;
}
// onCreateViewHolder 根據 type 加載不同布局
// 滑動監聽中動態調整 Header 狀態(固定/浮動/隱藏)
CollapsingToolbarLayout。NestedScrollView 或 RecyclerView。app:layout_scrollFlags="scroll|exitUntilCollapsed" 實現自動折疊/展開。OnScrollListener / OnScrollChangeListener 獲取 dy 判斷方向。onInterceptTouchEvent / onTouchEvent。MotionLayout 實現複雜動畫(按鈕縮放、透明度漸變)。RecyclerView 緩存與預加載。SmartRefreshLayout 實現下拉刷新與 Header 聯動。選擇方案取決於項目最低 API 級別、UI 複雜度及維護成本。現代項目首選 CoordinatorLayout 或 RecyclerView 多類型方案。