Я ищу способ отобразить список изображений/значков переменной ширины в моем пользовательском интерфейсе с включенным переносом строк, чтобы в строке могло быть переменное количество объектов. Список объектов является динамическим и берется из БД. В настоящее время я использую StaggeredGridLayout, но ограничения следующие:
(смотрите мои скриншоты ниже)
Я пропустил что-то огромное здесь? Возможно, мне следует использовать совершенно другую конструкцию (например, таблицу), но дайте мне знать, если я упустил что-то очевидное.
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)):
Желаемый вид (перенос строк, постоянный интервал, динамическое количество столбцов):
Вы должны рассмотреть FlexboxLayout. Взгляните на readme на сайте проекта GitHub. Я думаю, вы найдете, что это будет соответствовать вашим потребностям. Существует также FlexboxLayoutManager для RecyclerView. Все это поддерживается Google.
Вы можете загрузить проект GitHub, чтобы поиграть с ним и посмотреть, сможете ли вы его использовать. В магазине Google Play также есть несколько демо-приложений для игровых площадок. Просто найдите его.
Я бы не стал использовать сетку для этого. У меня был бы LinearLayout для каждой строки, и я бы измерял перед добавлением текста. Если бы это не подходило, я бы добавил новую строку.