最近要实现如下效果。根据数据个数不同,进行不同的排列。
3条数据时如下
配置GridLayout
<GridLayout
android:id="@+id/gridLayout"
android:background="#eee"
android:layout_width="match_parent"
android:layout_height="166dp"
>
</GridLayout>
3个数据的情况,第一个view必须要设置跨两行,并设置它的宽高。
int max = dpToPx(166, context);
int min=dpToPx(81, context);
int margin = dpToPx(4, context);
int length = buildingEntities.length;
if (length == 3) {
gridLayout.setColumnCount(2);
gridLayout.setRowCount(2);
View cellView1 = getCellView(layoutInflater, buildingEntities[0]);
GridLayout.LayoutParams layoutParams1 = new GridLayout.LayoutParams();
// layoutParams1.columnSpec = GridLayout.spec(0, 1);
//设置第一个跨两行,必须设置。并设置它的宽
layoutParams1.rowSpec = GridLayout.spec(0, 2);
layoutParams1.width = max;
layoutParams1.rightMargin = margin;
layoutParams1.setGravity(Gravity.FILL_VERTICAL);
cellView1.setLayoutParams(layoutParams1);
cellView1.setBackgroundColor(Color.BLUE);
gridLayout.addView(cellView1);
View cellView2 = getCellView(layoutInflater, buildingEntities[1]);
GridLayout.LayoutParams layoutParams2 = new GridLayout.LayoutParams();
// layoutParams2.columnSpec = GridLayout.spec(1, 1);
// layoutParams2.rowSpec = GridLayout.spec(0, 1);
//设置宽高
layoutParams2.height = min;
layoutParams2.width = max;
layoutParams2.bottomMargin = margin;
cellView2.setLayoutParams(layoutParams2);
cellView2.setBackgroundColor(Color.RED);
gridLayout.addView(cellView2);
View cellView3 = getCellView(layoutInflater, buildingEntities[2]);
GridLayout.LayoutParams layoutParams3 = new GridLayout.LayoutParams();
// layoutParams3.columnSpec = GridLayout.spec(1, 1);
// layoutParams3.rowSpec = GridLayout.spec(1, 1);
layoutParams3.height = min;
layoutParams3.width = max;
cellView3.setLayoutParams(layoutParams3);
cellView3.setBackgroundColor(Color.GREEN);
gridLayout.addView(cellView3);
}
4个数据的情况
else if (length == 4) {
//设置为2行 3列
gridLayout.setColumnCount(3);
gridLayout.setRowCount(2);
View cellView1 = getCellView(layoutInflater, buildingEntities[0]);
GridLayout.LayoutParams layoutParams1 = new GridLayout.LayoutParams();
// layoutParams1.columnSpec = GridLayout.spec(0, 0);
//跨2行
layoutParams1.rowSpec = GridLayout.spec(0, 2);
layoutParams1.width = min;
layoutParams1.rightMargin = margin;
layoutParams1.setGravity(Gravity.FILL_VERTICAL);
cellView1.setLayoutParams(layoutParams1);
gridLayout.addView(cellView1);
View cellView2 = getCellView(layoutInflater, buildingEntities[1]);
GridLayout.LayoutParams layoutParams2 = new GridLayout.LayoutParams();
// layoutParams2.columnSpec = GridLayout.spec(1, 0);
//跨2行
layoutParams2.rowSpec = GridLayout.spec(0, 2);
layoutParams2.width = min;
layoutParams2.rightMargin = margin;
layoutParams2.setGravity(Gravity.FILL_VERTICAL);
cellView2.setLayoutParams(layoutParams2);
gridLayout.addView(cellView2);
View cellView3 = getCellView(layoutInflater, buildingEntities[2]);
GridLayout.LayoutParams layoutParams3 = new GridLayout.LayoutParams();
// layoutParams3.columnSpec = GridLayout.spec(2, 1);
// layoutParams3.rowSpec = GridLayout.spec(0, 1);
layoutParams3.height = min;
layoutParams3.setGravity(Gravity.FILL_HORIZONTAL);
// layoutParams3.width = max;
layoutParams3.bottomMargin = margin;
cellView3.setLayoutParams(layoutParams3);
gridLayout.addView(cellView3);
View cellView4 = getCellView(layoutInflater, buildingEntities[3]);
GridLayout.LayoutParams layoutParams4= new GridLayout.LayoutParams();
// layoutParams4.columnSpec = GridLayout.spec(2, 1);
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams4.height = min;
// layoutParams4.width = max;
layoutParams4.setGravity(Gravity.FILL_HORIZONTAL);
cellView4.setLayoutParams(layoutParams4);
gridLayout.addView(cellView4);
}
else if (length == 5) {
//2行 3列
gridLayout.setColumnCount(3);
gridLayout.setRowCount(2);
View cellView1 = getCellView(layoutInflater, buildingEntities[0]);
GridLayout.LayoutParams layoutParams1 = new GridLayout.LayoutParams();
// layoutParams1.columnSpec = GridLayout.spec(0, 0);
//跨2行
layoutParams1.rowSpec = GridLayout.spec(0, 2);
layoutParams1.width = min;
layoutParams1.rightMargin = margin;
layoutParams1.setGravity(Gravity.FILL_VERTICAL);
cellView1.setLayoutParams(layoutParams1);
gridLayout.addView(cellView1);
View cellView2 = getCellView(layoutInflater, buildingEntities[1]);
GridLayout.LayoutParams layoutParams2 = new GridLayout.LayoutParams();
// layoutParams2.columnSpec = GridLayout.spec(1, 0);
layoutParams2.width = max;
layoutParams2.height = min;
layoutParams2.rightMargin = margin;
cellView2.setLayoutParams(layoutParams2);
gridLayout.addView(cellView2);
View cellView3 = getCellView(layoutInflater, buildingEntities[2]);
GridLayout.LayoutParams layoutParams3 = new GridLayout.LayoutParams();
// layoutParams3.columnSpec = GridLayout.spec(2, 1);
// layoutParams3.rowSpec = GridLayout.spec(0, 1);
layoutParams3.width = min;
layoutParams3.height = min;
// layoutParams3.width = max;
layoutParams3.bottomMargin = margin;
cellView3.setLayoutParams(layoutParams3);
gridLayout.addView(cellView3);
View cellView4 = getCellView(layoutInflater, buildingEntities[3]);
GridLayout.LayoutParams layoutParams4= new GridLayout.LayoutParams();
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams4.height = min;
layoutParams4.width = max;
cellView4.setLayoutParams(layoutParams4);
gridLayout.addView(cellView4);
View cellView5 = getCellView(layoutInflater, buildingEntities[4]);
GridLayout.LayoutParams layoutParams5= new GridLayout.LayoutParams();
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams5.height = min;
layoutParams5.width = min;
cellView5.setLayoutParams(layoutParams5);
gridLayout.addView(cellView5);
}
else if (length == 6) {
gridLayout.setColumnCount(4);
gridLayout.setRowCount(2);
View cellView1 = getCellView(layoutInflater, buildingEntities[0]);
GridLayout.LayoutParams layoutParams1 = new GridLayout.LayoutParams();
// layoutParams1.columnSpec = GridLayout.spec(0, 0);
layoutParams1.rowSpec = GridLayout.spec(0, 2);
layoutParams1.width = min;
layoutParams1.rightMargin = margin;
layoutParams1.setGravity(Gravity.FILL_VERTICAL);
cellView1.setLayoutParams(layoutParams1);
gridLayout.addView(cellView1);
View cellView2 = getCellView(layoutInflater, buildingEntities[1]);
GridLayout.LayoutParams layoutParams2 = new GridLayout.LayoutParams();
// layoutParams2.columnSpec = GridLayout.spec(1, 0);
layoutParams2.rowSpec = GridLayout.spec(0, 2);
layoutParams2.setGravity(Gravity.FILL_VERTICAL);
layoutParams2.width = min;
layoutParams2.rightMargin = margin;
cellView2.setLayoutParams(layoutParams2);
gridLayout.addView(cellView2);
View cellView3 = getCellView(layoutInflater, buildingEntities[2]);
GridLayout.LayoutParams layoutParams3 = new GridLayout.LayoutParams();
// layoutParams3.columnSpec = GridLayout.spec(2, 1);
// layoutParams3.rowSpec = GridLayout.spec(0, 1);
layoutParams3.width = min;
layoutParams3.height = min;
// layoutParams3.width = max;
layoutParams3.bottomMargin = margin;
layoutParams3.rightMargin = margin;
cellView3.setLayoutParams(layoutParams3);
gridLayout.addView(cellView3);
View cellView4 = getCellView(layoutInflater, buildingEntities[3]);
GridLayout.LayoutParams layoutParams4= new GridLayout.LayoutParams();
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams4.height = min;
layoutParams4.width = min;
cellView4.setLayoutParams(layoutParams4);
gridLayout.addView(cellView4);
View cellView5 = getCellView(layoutInflater, buildingEntities[4]);
GridLayout.LayoutParams layoutParams5= new GridLayout.LayoutParams();
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams5.height = min;
layoutParams5.width = min;
layoutParams5.rightMargin = margin;
cellView5.setLayoutParams(layoutParams5);
gridLayout.addView(cellView5);
View cellView6 = getCellView(layoutInflater, buildingEntities[5]);
GridLayout.LayoutParams layoutParams6= new GridLayout.LayoutParams();
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams6.height = min;
layoutParams6.width = min;
cellView6.setLayoutParams(layoutParams6);
gridLayout.addView(cellView6);
}else if (length == 7) {
gridLayout.setColumnCount(4);
gridLayout.setRowCount(2);
View cellView1 = getCellView(layoutInflater, buildingEntities[0]);
GridLayout.LayoutParams layoutParams1 = new GridLayout.LayoutParams();
// layoutParams1.columnSpec = GridLayout.spec(0, 0);
layoutParams1.rowSpec = GridLayout.spec(0, 2);
layoutParams1.width = min;
layoutParams1.rightMargin = margin;
layoutParams1.setGravity(Gravity.FILL_VERTICAL);
cellView1.setLayoutParams(layoutParams1);
gridLayout.addView(cellView1);
View cellView2 = getCellView(layoutInflater, buildingEntities[1]);
GridLayout.LayoutParams layoutParams2 = new GridLayout.LayoutParams();
// layoutParams2.columnSpec = GridLayout.spec(1, 0);
layoutParams2.setGravity(Gravity.FILL_VERTICAL);
layoutParams2.height = min;
layoutParams2.width = min;
layoutParams2.rightMargin = margin;
cellView2.setLayoutParams(layoutParams2);
gridLayout.addView(cellView2);
View cellView3 = getCellView(layoutInflater, buildingEntities[2]);
GridLayout.LayoutParams layoutParams3 = new GridLayout.LayoutParams();
// layoutParams3.columnSpec = GridLayout.spec(2, 1);
// layoutParams3.rowSpec = GridLayout.spec(0, 1);
layoutParams3.width = min;
layoutParams3.height = min;
// layoutParams3.width = max;
layoutParams3.bottomMargin = margin;
layoutParams3.rightMargin = margin;
cellView3.setLayoutParams(layoutParams3);
gridLayout.addView(cellView3);
View cellView4 = getCellView(layoutInflater, buildingEntities[3]);
GridLayout.LayoutParams layoutParams4= new GridLayout.LayoutParams();
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams4.height = min;
layoutParams4.width = min;
cellView4.setLayoutParams(layoutParams4);
gridLayout.addView(cellView4);
View cellView5 = getCellView(layoutInflater, buildingEntities[4]);
GridLayout.LayoutParams layoutParams5= new GridLayout.LayoutParams();
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams5.height = min;
layoutParams5.width = min;
layoutParams5.rightMargin = margin;
cellView5.setLayoutParams(layoutParams5);
gridLayout.addView(cellView5);
View cellView6 = getCellView(layoutInflater, buildingEntities[5]);
GridLayout.LayoutParams layoutParams6= new GridLayout.LayoutParams();
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams6.height = min;
layoutParams6.width = min;
cellView6.setLayoutParams(layoutParams6);
gridLayout.addView(cellView6);
View cellView7 = getCellView(layoutInflater, buildingEntities[5]);
GridLayout.LayoutParams layoutParams7= new GridLayout.LayoutParams();
// layoutParams4.rowSpec = GridLayout.spec(1, 1);
layoutParams7.height = min;
layoutParams7.width = min;
cellView7.setLayoutParams(layoutParams7);
gridLayout.addView(cellView7);
}
GridLayout gridLayout = (GridLayout) findViewById(R.id.gridLayout);
/*RecommendBuildingEntity[] buildingEntities = new RecommendBuildingEntity[3];
buildingEntities[0] = new RecommendBuildingEntity(R.mipmap.home_three_hot, "热销楼盘", "房源热抢中");
buildingEntities[1] = new RecommendBuildingEntity(R.mipmap.home_three_small, "即将开盘");
buildingEntities[2] = new RecommendBuildingEntity(R.mipmap.home_three_high, "高佣楼盘", "佣金拿到手软");*/
/*RecommendBuildingEntity[] buildingEntities = new RecommendBuildingEntity[4];
buildingEntities[0] = new RecommendBuildingEntity(R.mipmap.home_four_hot, "热销楼盘", "房源热抢中");
buildingEntities[1] = new RecommendBuildingEntity(R.mipmap.home_four_start, "即将开盘");
buildingEntities[2] = new RecommendBuildingEntity(R.mipmap.home_three_high, "高佣楼盘", "佣金拿到手软");
buildingEntities[3] = new RecommendBuildingEntity(R.mipmap.home_three_small, "刚需楼盘", "逆天小户型");*/
/*RecommendBuildingEntity[] buildingEntities = new RecommendBuildingEntity[5];
buildingEntities[0] = new RecommendBuildingEntity(R.mipmap.home_four_hot, "热销楼盘", "房源热抢中");
buildingEntities[1] = new RecommendBuildingEntity(R.mipmap.home_three_high, "高佣楼盘", "佣金拿到手软");
buildingEntities[2] = new RecommendBuildingEntity(R.mipmap.home_five_start, "即将开盘");
buildingEntities[3] = new RecommendBuildingEntity(R.mipmap.home_three_small, "刚需楼盘", "逆天小户型");
buildingEntities[4] = new RecommendBuildingEntity(R.mipmap.home_diy, "自定义");*/
/*RecommendBuildingEntity[] buildingEntities = new RecommendBuildingEntity[6];
buildingEntities[0] = new RecommendBuildingEntity(R.mipmap.home_four_hot, "热销楼盘", "房源热抢中");
buildingEntities[1] = new RecommendBuildingEntity(R.mipmap.home_six_high, "高佣楼盘", "佣金拿到手软");
buildingEntities[2] = new RecommendBuildingEntity(R.mipmap.home_six_small, "刚需楼盘", "逆天小户型");
buildingEntities[3] = new RecommendBuildingEntity(R.mipmap.home_diy, "自定义");
buildingEntities[4] = new RecommendBuildingEntity(R.mipmap.home_five_start, "即将开盘");
buildingEntities[5] = new RecommendBuildingEntity(R.mipmap.home_diy, "自定义");*/
RecommendBuildingEntity[] buildingEntities = new RecommendBuildingEntity[7];
buildingEntities[0] = new RecommendBuildingEntity(R.mipmap.home_four_hot, "热销楼盘", "房源热抢中");
buildingEntities[1] = new RecommendBuildingEntity(R.mipmap.home_seven_high, "高佣楼盘", "佣金拿到手软");
buildingEntities[2] = new RecommendBuildingEntity(R.mipmap.home_five_start, "即将开盘");
buildingEntities[3] = new RecommendBuildingEntity(R.mipmap.home_diy, "自定义");
buildingEntities[4] = new RecommendBuildingEntity(R.mipmap.home_six_small, "刚需楼盘", "逆天小户型");
buildingEntities[5] = new RecommendBuildingEntity(R.mipmap.home_diy, "自定义");
buildingEntities[6] = new RecommendBuildingEntity(R.mipmap.home_diy, "自定义");
initGridLayout(gridLayout,buildingEntities);