Re: [問題] GridLayoutManager要如何由左至右排列
※ 引述《taco2548 (T@cO)》之銘言:
: 我希望我的RecyclerView是可以左右拖曳,而不是上下拖曳
: GridLayoutManager layoutManager
: = new GridLayoutManager(context, 3, LinearLayoutManager.HORIZONTAL, false);
: 呈現的結果如下
: 00 03 06 09
: 01 04 07 10
: 02 05 08 11
: 我希望呈現的結果如下
: 00 01 02 03
: 04 05 06 07
: 08 09 10 11
: 請問應該要怎麼做才能達到我想要的結果
: 設定LinearLayoutManager.VERTICAL雖然有用
: 但會變成上下拖曳
: 請各位大大開釋一下
首先,在使用scroll view或類似的元件的時候,必需要有一個認知,
scroll view所呈現的內容,只是整體內容的一部分,在捲動的時候,
整體的內容並沒有改變, 而是如下圖一般,改變了呈現窗口的位置.
┌──────┐
00 03│06 09 12 15 │18
01 04│07 10 13 16 │19
02 05│08 11 14 17 │20
└——————┘
也因此,Grid Manager所設計的layout,其實考慮的是在N*M的整體內容下
如何去呈現N*P的範圍.
以上圖來說,就是如何用 3*4的視窗,去瀏覧 3*7 的內容
有了這個認知以後,回過頭來看你的需求,會立刻面臨下面這問題:
不知道整體資料怎麼排列
你所考慮的只有目前看到的資料怎麼排列, 卻忽略了背後有其他資料的可能性。
依據你對原來推文的回覆:「幾個應該不是重點」
個人推測你應該想要不限數目都能呈現,但照原文的說明,
你的整體資料,超過4*3時,會變成如下排列:
┌──────┐
│00 01 02 03 │12 13? <-- 橫排?
│04 05 06 07 │13? <-- 或是直排? 無法確定剩下的資料怎麼排列
│08 09 10 11 │
└──────┘
如果是橫排好了,且固定每頁都一定要有12個資料好了,
你的資料整體會變成如下:
┌──────┐
│00 01 02 03 │12 13 14 15
│04 05 06 07 │16 17 18 19
│08 09 10 11 │20 21 22 23
└──────┘
當捲動一欄時,你會期待看到什麼?
┌──────┐ ┌──────┐
00 │01 02 03 12 │13 14 15 00 │01 02 03 04 │05 06 07
04 │05 06 07 16 │17 18 19 還是 08 │09 10 11 12 │13 14 15
08 │09 10 11 20 │21 22 23 16 │17 18 19 20 │21 22 23
└──────┘ └──────┘
或者每次都捲動一頁(4*3) 時,你期待看到什麼?
┌──────┐ ┌──────┐
00 01 02 03 │12 13 14 15 │ 00 01 02 03│04 05 06 07 │
04 05 06 07 │16 17 18 19 │ 還是 08 09 10 11│12 13 14 15 │
08 09 10 11 │20 21 22 23 │ 16 17 18 19│20 21 22 23 │
└──────┘ └──────┘
建議原PO還是先考慮一下,「整體資料」應該要怎麼呈現,
這樣其他人才方便給你比較合適的建議.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.177.202
※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1554641689.A.EAC.html
推
04/07 23:59,
5年前
, 1F
04/07 23:59, 1F
→
04/08 00:00,
5年前
, 2F
04/08 00:00, 2F
→
04/08 00:01,
5年前
, 3F
04/08 00:01, 3F
→
04/08 00:01,
5年前
, 4F
04/08 00:01, 4F
→
04/08 00:02,
5年前
, 5F
04/08 00:02, 5F
→
04/08 00:04,
5年前
, 6F
04/08 00:04, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 5 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章