#java #android #android-recyclerview #android-flexboxlayout
#java #Android #android-recyclerview #android-flexboxlayout
Вопрос:
Я хочу, чтобы только 3 элемента были центрированы вместе с горизонтальной прокруткой для оставшихся элементов, также я хочу, чтобы элемент по центру выделялся при прокрутке или касании. Вот что я хочу
Я использую flexboxlayout manager, и вот что я сделал
flexboxLayoutManager=new FlexboxLayoutManager(getContext());
flexboxLayoutManager.setJustifyContent(JustifyContent.SPACE_AROUND);
flexboxLayoutManager.setFlexDirection(FlexDirection.COLUMN);
flexboxLayoutManager.setFlexWrap(FlexWrap.WRAP);
recyclerView_stats_list.setLayoutManager(flexboxLayoutManager);
и в адаптере viewholder
ViewGroup.LayoutParams lp = itemView.getLayoutParams();
if (lp instanceof FlexboxLayoutManager.LayoutParams) {
FlexboxLayoutManager.LayoutParams flexboxLp =
(FlexboxLayoutManager.LayoutParams) itemView.getLayoutParams();
flexboxLp.setFlexGrow(1.0f);
}
Если я изменяю направление flex от столбца к строке, оно центрирует мои 3 элемента, но затем оно начинает прокручиваться по вертикали, мне нужно то же самое, но с горизонтальной прокруткой.
Ответ №1:
Если у вас есть горизонтальный RecyclerView, вы можете использовать его в своем адаптере
ViewGroup.LayoutParams lp = viewHolder.itemView.getLayoutParams();
if (lp instanceof FlexboxLayoutManager.LayoutParams) {
FlexboxLayoutManager.LayoutParams flexboxLp =
(FlexboxLayoutManager.LayoutParams) lp;
flexboxLp.setFlexShrink(0.0f);
flexboxLp.setAlignSelf(AlignSelf.FLEX_END);
}
настройте RecyclerView с помощью FlexLayoutManager следующим образом в вашем MainActivity
FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(mContext);
layoutManager.setFlexDirection(FlexDirection.ROW);
layoutManager.setFlexWrap(FlexWrap.NOWRAP);
layoutManager.setJustifyContent(JustifyContent.SPACE_AROUND);
recyclerView.setLayoutManager(layoutManager)
после настройки прокрутки и интервала все в порядке. Вы можете создать файл с возможностью рисования и настроить OnClickListener в вашем адаптере для выделения. Попробуйте поискать элементы подсветки в RecyclerView. Прочитайте о FlexLayout на github, чтобы получить больше информации о том, как вы можете ограничить 3 элемента на экране. Я бы рекомендовал создать класс ItemDecoration и добавить его в ваш RecyclerView