Recyclerview列表item设置成等宽高的正方形
程序员文章站
2022-04-02 21:51:43
...
第一种方法是动态设置宽高:(亲测有效)
//设置item的高度跟随宽度走
ViewGroup.LayoutParams parm = holder.layoutContent.getLayoutParams();
parm.height = gridLayoutManager.getWidth()/ gridLayoutManager.getSpanCount()
- 2*holder.layoutContent.getPaddingLeft() - 2*((ViewGroup.MarginLayoutParams)parm).leftMargin;
第二种方法是在item外层嵌套一个自定义为正方形的布局:(亲测有效,但是在多类型布局中有可能出现底部出现留白的问题,所以推荐使用第一种方法)
public class SquareView extends RelativeLayout {
public SquareView(Context context) {
super(context); }
public SquareView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(getDefaultSize(0, widthMeasureSpec), getDefaultSize(0, heightMeasureSpec));
int childWidthSize = getMeasuredWidth();
widthMeasureSpec = MeasureSpec.makeMeasureSpec( childWidthSize, MeasureSpec.EXACTLY);
// 高度和宽度一样
heightMeasureSpec = widthMeasureSpec;
//设定高是宽的比例
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
上一篇: LeetCode221——最大正方形