我只希望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);
}
如果我将弹性方向从列更改为行,则它将我的3个项目居中,但是它开始垂直滚动,我需要同样的内容,但水平滚动。
答案 0 :(得分:0)
如果您有卧式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