recycle加载item的时候有时候会要求item的长宽成一定比例
- 比如当LinearLayoutManager时,通常宽是match_parent,高就要我们自己指定。我们可以让高和宽成一定比例。
- GridLayoutManager的时候可能要是正方形或是指定长宽比例的矩形。设置列数后,宽度确定,长久可以按照比例来自适应。
主要通过重写RelativeLayout
public class SquareItem extends RelativeLayout {
public SquareItem(Context context) {
super(context);
}
public SquareItem(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareItem(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 = childWidthSize/6*5; //设定高是宽的比例
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}