首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在airbnb Epoxy中分配网格跨度?

如何在airbnb Epoxy中分配网格跨度?
EN

Stack Overflow用户
提问于 2019-04-14 14:14:11
回答 1查看 2.9K关注 0票数 1

我已经开始学习如何在我的项目中使用Epoxy。我正在通过运行样本工程来学习这个库。在我深入研究网格跨度设置之前,一切都很好。我对它的网格系统感到困惑。

正如您在示例应用程序中看到的那样,ViewHolders可以分为3部分。这些部分可以特别在模型中表示,例如HeaderViewModel_ButtonBindingModel_CarouselModelGroup

init RecyclerView的代码如下:

代码语言:javascript
复制
EpoxyRecyclerView recyclerView = (EpoxyRecyclerView) findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));

据官方医生说:

如果使用GridLayoutManager,这将自动将跨度计数与EpoxyController同步。

我发现HeaderViewModel_CarouselModelGroup正确地同步了span,但是ButtonBindingModel_没有。我一直在示例代码中搜索" span“或"grid”一词,我只是不明白为什么可以将其span设置为1.

如果将RecyclerView的span设置从2更改为3:

代码语言:javascript
复制
EpoxyRecyclerView recyclerView = (EpoxyRecyclerView) findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));

HeaderViewModel_CarouselModelGroup仍然要同步整个跨度,但是ButtonBindingModel_的广度仍然是1。

我想知道是否有一种方法可以将ButtonBindingModel_的跨度设置为完整的span,以及通过代码(编程)或布局将HeaderViewModel_CarouselModelGroup设置为特定的span的方法。请帮我解决这个问题,我很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-17 22:56:16

我们使用的一件事是使用spanSizeOverride在模型基础上设置span。我们有几个不同的模型,我们希望在2vs1的跨度,所以我们设置了覆盖他们。

代码语言:javascript
复制
gridLayoutManager.spanSizeLookup = ourController.spanSizeLookup
...

collectionDescription {
  id(DESCRIPTION_ID)
  description(data.description ?: "")
  spanSizeOverride { _, _, _ -> 2 }
}
data.productTemplates?.forEachIndexed { index, product ->
  collectionProduct {
    id("$PRODUCT_ID ${product.slug} $index")
    product(product)
    listener(listener)
  }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55676248

复制
相关文章

相似问题

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