Recycler View с несколькими строками и столбцами - AutoFit, например Flow Layout [Android]
Мне сложно создать такой макет:
![введите описание изображения здесь]()
Мое первое понимание заключалось в том, чтобы использовать RecyclerView с адаптером, который может обрабатывать каждый элемент и раздувать его макет.
Пока что не так хорошо.
Я получил этот макет до сих пор:
![введите описание изображения здесь]()
Я могу рубить то, что я почти там, но на самом деле... Я провожу неделю задуматься о том, как сделать это лучше, или просто как пользовательский интерфейс.
Некоторые из моих попыток были
- Используйте макет сетки и измените максимальное количество столбцов в зависимости от количества элементов в списке.
- StaggeredGridLayoutManager звучал как мощный кандидат, чтобы исправить его и сделать меня счастливым, но, к сожалению, когда я пытался его использовать, я понимаю, что нам нужно передать несколько spanCount (столбцов) на конструкторе, и я нашел несколько способов обойти это ограничение меняло количество столбцов каждой строки, но мне не понравился конечный результат, не так, как я видел в других приложениях, таких как Foursquare, когда вы настраиваете свои интересы.
- Я проверил эту библиотеку Flow Layout, но я даже не начал ее использовать, потому что я не хочу потерять весь recycler я считаю, что есть способ заставить его работать!..... Даже зная, что библиотека делает именно то, что мне нужно.
Ребята, я здесь не ищу какой-то уже сделанный мир кода или кто-то, кто выполняет мою работу. На самом деле я ищу свет в конце туннеля.
Ответы
Ответ 1
Здравствуйте, если вы не хотите использовать recyclerview, есть еще один пример, использующий пользовательскую библиотеку, которая действует как List GitHubLibrary TagLayout
-
Пример кода:
mFlowLayout.setAdapter(new TagAdapter<String>(mVals)
{
@Override
public View getView(FlowLayout parent, int position, String s)
{
TextView tv = (TextView) mInflater.inflate(R.layout.tv,
mFlowLayout, false);
tv.setText(s);
return tv;
}
});
Используя приведенный ниже код, вы можете предварительно установить желаемый выбор:
mAdapter.setSelectedList(1,3,5,7,8,9);
Покажет результат, как показано ниже: -
![enter image description here]()
Ответ 2
Это легко сделать с помощью новой библиотеки дизайна материалов Google, которая содержит компонент под названием Chips. Таким образом, вам не нужно использовать RecyclerView.
Чип представляет собой сложную сущность в небольшом блоке, таком как контакт. Это закругленная кнопка, которая состоит из метки, дополнительного значка микросхемы и дополнительного значка закрытия. Фишка может быть либо нажата, либо переключена, если ее можно проверить.
КАК ИСПОЛЬЗОВАТЬ КОМПОНЕНТ:
1. Импортируйте библиотеку
implementation 'com.google.android.material:material:1.1.0'
2. Используйте код ниже
<com.google.android.material.chip.ChipGroup
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- Your items here -->
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Item 1"/>
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Item 2"/>
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Item 3"/>
<!-- End -->
</com.google.android.material.chip.ChipGroup>
Вы можете найти более подробную информацию здесь: Компоненты материала
Ответ 3
Сейчас может быть слишком поздно, но вы также можете использовать Google FlexBoxLayout
демонстрация