如何通过动态添加正方形项目制作均匀分布的网格布局

问题描述 投票:0回答:2

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

具有10个项目的示例布局如下:

enter image description here

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

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

android kotlin grid-layout
2个回答
0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.