我想创建一个网格布局,其中每个项目都占用尽可能多的空间(减去填充),但前提是只要有可用的列(此后,下一个项目将插入下一行,同时保持尺寸)。此外,每个项目都必须是正方形,并且必须动态添加。
具有10个项目的示例布局如下:
我试图通过设置权重,比率约束,覆盖onMeasure
来实现这一目标-但我无法使其正常工作。我将对程序化或基于XML的解决方案感到满意(只要可以以编程方式添加每个项目)。我希望该解决方案使用Kotlin,但我也对基于Java的解决方案感到满意。
[可能值得一提的是,网格布局中的每个项目都是一种布局(截至目前为RelativeLayout
),以便对其进行充气并以编程方式轻松设置分层的背景可绘制对象。
我认为您可以使用其他版式来实现所需的功能
看看RecyclerView。您将需要传递GridLayoutManager。 This tutorial可能会或可能不会帮助您。对于正方形项目,我建议使用CardView,但这不是必需的。如果您同时针对平板电脑和智能手机,请签出this。为了动态添加新项目,您应该通知recyclerView的适配器。参见此link。您还可以扩展RecyclerView或GridLayoutManager以获得对项目的更多控制。