Как сделать равномерно расположенную сетку с динамически добавленными квадратными элементами - PullRequest
0 голосов
/ 02 апреля 2020

Я хотел бы создать макет сетки, в котором каждый элемент занимает как можно больше места (за исключением заполнения), но только до тех пор, пока доступны столбцы (после этого следующий элемент будет вставлен в следующую строку, пока сохраняя размер). Кроме того, каждый элемент должен быть квадратом и добавляться динамически.

Пример макета из 10 элементов будет следующим:

enter image description here

Я пытался добиться этого, устанавливая веса, ограничения отношения, переопределяя onMeasure - но я просто не могу заставить его работать. Я был бы счастлив с программным решением c или решением XML (при условии, что каждый элемент может быть добавлен программно). Я бы предпочел, чтобы решение было в Kotlin, но я был бы счастлив и на основе Java.

Вероятно, стоит сказать, что каждый элемент в макете сетки является макетом (RelativeLayout на данный момент), чтобы облегчить накачивание и настроить наслоенный фон программным способом.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

Взгляните на RecyclerView . Вам нужно будет передать GridLayoutManager. Этот учебник может или не может помочь вам. Для квадратных элементов я предлагаю использовать CardView , но это не обязательно. Если вы ориентируетесь как на планшеты, так и на смартфоны, отметьте this out. А для динамического добавления новых элементов вы должны уведомить адаптер recyclerView. Смотрите эту ссылку . Вы также можете расширить RecyclerView или GridLayoutManager для большего контроля над элементами.

0 голосов
/ 02 апреля 2020

Я думаю, что вы могли бы достичь того, что вы хотите, с другим макетом

Взгляните на https://github.com/google/flexbox-layout, у него есть много методов для контроля роста или сокращения клеток и включает автомат c или ручную упаковку ячеек.

...