首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Android中制作这个自定义的“网格”布局?

如何在Android中制作这个自定义的“网格”布局?
EN

Stack Overflow用户
提问于 2017-02-15 05:00:33
回答 2查看 560关注 0票数 0

我需要9 square单元,然后是long rectangle单元,然后是9 square单元。我应该如何设置LinearLayoutManager以将其传递给RecyclerView

我尝试了两种方式:

代码语言:javascript
复制
LinearLayoutManager llm2 = new LinearLayoutManager(App.getContext());
llm2.setOrientation(LinearLayoutManager.VERTICAL);

但在这里,所有的项目都在单独的一行中。

如果我将其设置为.HORIZONTAL,那么所有元素都将在一个很长的行中。

试用过GridLayoutManager

代码语言:javascript
复制
RecyclerView.LayoutManager glm = new GridLayoutManager(App.getContext(), 3);

但这里不知道如何处理长项。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-15 05:09:49

你可以创建一个跨度为3的GridLayoutManager,并在你的spanSizeLookup中为你的“长元素”返回3的大小:

代码语言:javascript
复制
    final int spanCount = 3;

    GridLayoutManager glm = new GridLayoutManager(this, spanCount);
    recyclerView.setLayoutManager(glm);

    glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            // You could also use adapter.getItemViewType(position) and check if
            // the type of the view is "LONG_VIEW" instead of using a modulo
            if (position % 10 == 9) {
                return spanCount;
            } else {
                return 1;
            }
        }
    });
票数 0
EN

Stack Overflow用户

发布于 2017-02-15 05:06:46

您可以在每9个项目之后使用setSpanCount,您将获得一行单元格。

因此,基本上您必须在数组中放入一个“空项目”,然后将其传递到适配器中,以指示整行,因为回收视图仍然需要知道这一点才能显示它。

示例:

数组

代码语言:javascript
复制
[data,data,data,data,data,data,data,data,data,"",data,data,etc...]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42236120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档