看板 AndroidDev 關於我們 聯絡資訊
※ 引述《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
taco2548: 我已經有說需要的是由左至右排列,並且橫移 04/07 23:59
taco2548: 4*3只是舉例,事實上我可能會做到33*3 04/08 00:00
taco2548: 主要問題是出在GridLayoutManager 04/08 00:01
taco2548: 只能 左至右排列 上下拖曳 04/08 00:01
taco2548: 或是 上至下排列 左右拖曳 二選一 04/08 00:02
taco2548: 目前看來最適合也最簡單的解答應該是矩陣轉置 04/08 00:04