需要在一般recyclerview中三处添加代码
先看公式
宽度 = recyclerView的宽度 ÷ 列数且recyclerView 宽度 = gridLayoutManager.getWidth();列数 = gridLayoutManage.getSpanCount(); width = gridLayoutManager.getWidth()/gridLayoutManage.getSpanCount();
在自己定义的适配器中加
public RecyclerViewAdapter(Context context, ArrayList list, OnItemClickListener listener,GridLayoutManager glm) { this.list = list; this.context = context; this.glm = glm; }
主活动中调用
GridLayoutManager glm_sys = new GridLayoutManager(getContext(),7);//分为7列 recycler_sys.setLayoutManager(glm_sys); //设置布局管理器 recycler_sys.setAdapter(new RecyclerViewAdapter(getContext(),item_list_sys,glm_sys));
适配器onBindViewHolder中
public void onBindViewHolder(SysWebHolder holder, final int position) { ...//省略获取button实例的代码 ViewGroup.LayoutParams parm = holder.button_img.getLayoutParams(); parm.height = glm.getWidth()/glm.getSpanCount() - 2*holder.button_img.getPaddingLeft() - 2*((ViewGroup.MarginLayoutParams)parm).leftMargin; }
参考