如何使用动态添加的正方形项制作均匀间隔的网格布局

时间:2020-04-02 09:34:51

标签: android kotlin grid-layout

我想创建一个网格布局,其中每个项目都占用尽可能多的空间(减去填充),但前提是只要有可用的列(此后,下一个项目将插入下一行,而保持大小)。此外,每个项目都必须是正方形,并且必须动态添加。

包含10个项目的示例布局如下:

enter image description here

我试图通过设置权重,比率约束,覆盖onMeasure来实现这一目标-但我只是无法使其正常工作。我将对程序化或基于XML的解决方案感到满意(只要可以以编程方式添加每个项目)。我希望该解决方案使用Kotlin,但我也对基于Java的解决方案感到满意。

也许值得一提的是,网格布局中的每个项目都是一种布局(截至目前为RelativeLayout),以便对其进行充气并以编程方式轻松设置分层的背景可绘制对象。

2 个答案:

答案 0 :(得分:0)

我认为您可以使用其他版式来实现所需的功能

看看https://github.com/google/flexbox-layout,它有很多方法可以控制细胞的生长或收缩,并包括自动或手动包裹细胞。

答案 1 :(得分:0)

看看RecyclerView。您将需要传递GridLayoutManager。 This tutorial可能会也可能不会帮助您。对于正方形项目,我建议使用CardView,但这不是必需的。如果您同时定位平板电脑和智能手机,请检查this。为了动态添加新项目,您应该通知recyclerView的适配器。参见此link。您还可以扩展RecyclerView或GridLayoutManager以获得对项目的更多控制。

相关问题