当我们的应用窗口是可以拖动调整宽度的时候,网格列表下,想根据屏幕宽度动态调整网格列数,就需要对RecyclerView进行动态计算GridColumnCount并进行设置。这里就需要对RecyclerView进行自定义,我们直接看代码:
public class GridLayoutRecyclerView extends RecyclerView{
private int mWidth;
private int mGridItemWidth;
private int mGridPaddingLeft;
private int mGridColumnCount = 1;
private BaseGridLayoutAdapter mBaseGridLayoutAdapter;
public GridLayoutRecyclerView(Context context) {
this(context, null);
}
public GridLayoutRecyclerView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public GridLayoutRecyclerView(Context context, AttributeSet attributeSet, int defStyle) {
super(context, attributeSet, defStyle);
//item width
mGridItemWidth = getResources().getDimensionPixelSize(R.dimen.item_grid_width_with_margin);
mGridPaddingLeft = getResources().getDimensionPixelSize(R.dimen.dp_nine);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
setPadding(mGridPaddingLeft != 0 ? mGridPaddingLeft : 0, 0, 0, 0);
super.onSizeChanged(w, h, oldw, oldh);
if (mWidth == w) {
return;
}
// calculate column co