2

我只希望 3 个项目与剩余项目的水平滚动一起居中,而且我希望居中的项目在滚动或点击时突出显示。这就是我想要的

在此处输入图像描述

我正在使用 flexboxlayout 管理器,这就是我所做的

flexboxLayoutManager=new FlexboxLayoutManager(getContext());
flexboxLayoutManager.setJustifyContent(JustifyContent.SPACE_AROUND);
flexboxLayoutManager.setFlexDirection(FlexDirection.COLUMN);
flexboxLayoutManager.setFlexWrap(FlexWrap.WRAP);

recyclerView_stats_list.setLayoutManager(flexboxLayoutManager);

并在适配器视图中

 ViewGroup.LayoutParams lp = itemView.getLayoutParams();
        if (lp instanceof FlexboxLayoutManager.LayoutParams) {
            FlexboxLayoutManager.LayoutParams flexboxLp =
                    (FlexboxLayoutManager.LayoutParams) itemView.getLayoutParams();
            flexboxLp.setFlexGrow(1.0f);
        }

如果我将 flex 方向从列更改为行,它将使我的 3 个项目居中,但随后它开始垂直滚动,我需要相同但水平滚动。

4

1 回答 1

2

如果你有一个水平的 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);
}

在 mainActivity 中使用 FlexLayoutManager 设置 recyclerView,如下所示

FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(mContext);
layoutManager.setFlexDirection(FlexDirection.ROW);
layoutManager.setFlexWrap(FlexWrap.NOWRAP);
layoutManager.setJustifyContent(JustifyContent.SPACE_AROUND);

recyclerView.setLayoutManager(layoutManager)

一旦你设置了滚动和间距就可以了。您可以创建一个可绘制文件并在适配器中设置 onClickListener 以突出显示。尝试在 recyclerView 中查找突出显示的元素。阅读 github 上的 FlexLayout 以获取有关如何在屏幕上限制 3 个元素的更多信息。建议创建一个 ItemDecoration 类并将其添加到您的 recyclerView

于 2019-11-14T16:36:13.847 回答