作者atst2 (atst2)
看板AndroidDev
标题Re: [问题] GridLayoutManager要如何由左至右排列
时间Sun Apr 7 20:54:45 2019
※ 引述《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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1554641689.A.EAC.html
1F:推 taco2548: 我已经有说需要的是由左至右排列,并且横移 04/07 23:59
2F:→ taco2548: 4*3只是举例,事实上我可能会做到33*3 04/08 00:00
3F:→ taco2548: 主要问题是出在GridLayoutManager 04/08 00:01
4F:→ taco2548: 只能 左至右排列 上下拖曳 04/08 00:01
5F:→ taco2548: 或是 上至下排列 左右拖曳 二选一 04/08 00:02
6F:→ taco2548: 目前看来最适合也最简单的解答应该是矩阵转置 04/08 00:04