StaggeredGridLayout с динамическим количеством объектов в строке, перенос строк

Я ищу способ отобразить список изображений/значков переменной ширины в моем пользовательском интерфейсе с включенным переносом строк, чтобы в строке могло быть переменное количество объектов. Список объектов является динамическим и берется из БД. В настоящее время я использую StaggeredGridLayout, но ограничения следующие:

  1. Требуется постоянное количество интервалов (столбцов) в строке. Я знаю, что могу установить это программно, но мне нужно как-то измерить каждый объект, чего я не хочу делать В самом деле из-за других ограничений, таких как № 2 ниже.
  2. Даже с переменной spanCount (количество столбцов) gridLayout растягивает каждую строку, чтобы заполнить максимальную ширину, создавая неприглядный интервал между каждым объектом.

(смотрите мои скриншоты ниже)

Я пропустил что-то огромное здесь? Возможно, мне следует использовать совершенно другую конструкцию (например, таблицу), но дайте мне знать, если я упустил что-то очевидное.

RecyclerView XML:

                    <android.support.v7.widget.RecyclerView
                    android:id = "@+id/tagsRecyclerView"
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"                        
                    android:layout_marginTop = "6dp"
                    android:layout_marginHorizontal = "8dp"
                    android:rotationY = "180"
                    app:layout_constraintEnd_toEndOf = "parent"
                    app:layout_constraintHorizontal_bias = "1.0"
                    app:layout_constraintStart_toEndOf = "@+id/tagsTxt"
                    app:layout_constraintTop_toBottomOf = "@+id/paragraphTxt" />

Макет инициализирован с использованием:

tagRecyclerLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);

Текущий вид (StaggeredGridLayout; сетка растягивается, чтобы заполнить все пространство, постоянное количество столбцов (spanCount)):

StaggeredGridLayout с динамическим количеством объектов в строке, перенос строк

Желаемый вид (перенос строк, постоянный интервал, динамическое количество столбцов):

StaggeredGridLayout с динамическим количеством объектов в строке, перенос строк

Я бы не стал использовать сетку для этого. У меня был бы LinearLayout для каждой строки, и я бы измерял перед добавлением текста. Если бы это не подходило, я бы добавил новую строку.

clavio 08.02.2019 22:04
0
1
182
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны рассмотреть FlexboxLayout. Взгляните на readme на сайте проекта GitHub. Я думаю, вы найдете, что это будет соответствовать вашим потребностям. Существует также FlexboxLayoutManager для RecyclerView. Все это поддерживается Google.

Вы можете загрузить проект GitHub, чтобы поиграть с ним и посмотреть, сможете ли вы его использовать. В магазине Google Play также есть несколько демо-приложений для игровых площадок. Просто найдите его.

Другие вопросы по теме