自定义GridLayout动态添加View,且平分宽高。
注意:这不是最好的方法,只是我研究出一种不靠谱的方法。
1.导入兼容包
compile 'com.android.support:gridlayout-v7:22.+'
2.设置最大的行和列(注意app:)
app:rowCount="4"
app:columnCount="4"
3.动态添加子View
LayoutParams params = new LayoutParams(
GridLayout.spec(GridLayout.UNDEFINED, 1f),
GridLayout.spec(GridLayout.UNDEFINED, 1f));//1f为比重
params.width=mWidth/4;
params.height=mWidth/4;
addView(blockView,params);
4.如果需要子View为正方形,修改子View的onMeasure方法
mWidth = MeasureSpec.getSize(widthMeasureSpec);
setMeasuredDimension(mWidth, mWidth);
5.GridLayout子类平分
//使用Spec定义子控件的位置和比重
GridLayout.Spec rowSpec = GridLayout.spec(i, 1f);
GridLayout.Spec columnSpec = GridLayout.spec(j, 1f);
//将Spec传入GridLayout.LayoutParams并设置宽高为0,必须设置宽高,否则视图异常
GridLayout.LayoutParams layoutParams = new GridLayout.LayoutParams(rowSpec, columnSpec);
layoutParams.height = 0;
layoutParams.width = 0;
//还可以根据位置动态定义子控件直接的边距,下面的意思是
layoutParams.bottomMargin = getResources().getDimensionPixelSize(R.dimen.dp_2);
this.addView(functionView, layoutParams);