想做便簽應用,需呈現九宮格卡片佈局。ListView 僅支援單行或單列,無法直接實現網格效果。
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth" />
BaseAdapter 填充資料,適合簡單靜態網格。RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
recyclerView.setAdapter(new MyAdapter(dataList));
StaggeredGridLayoutManager 實現瀑布流。Google 開源 flexbox-layout 庫,支援 CSS Flexbox 風格自動換行、對齊,適合不規則卡片尺寸。
| 方案 | 優點 | 缺點 |
|---|---|---|
| GridView | API 簡單、相容舊版本 | 無動畫、難以擴展、已棄用 |
| RecyclerView + GridLayoutManager | 效能佳、擴展性強、官方推薦 | 程式碼稍多 |
| FlexboxLayout | 極致彈性、響應式 | 需引入第三方庫 |
新專案首選 RecyclerView + GridLayoutManager,舊專案維護可用 GridView。