最近要實現(xiàn)如下效果。根據(jù)數(shù)據(jù)個數(shù)不同,進(jìn)行不同的排列。
3條數(shù)據(jù)時如下

Paste_Image.png
配置GridLayout
<GridLayout
android:id="@+id/gridLayout"
android:background="#eee"
android:layout_width="match_parent"
android:layout_height="166dp"
>
</GridLayout>
3個數(shù)據(jù)的情況,第一個view必須要設(shè)置跨兩行,并設(shè)置它的寬高。
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);
//設(shè)置第一個跨兩行,必須設(shè)置。并設(shè)置它的寬
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);
//設(shè)置寬高
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個數(shù)據(jù)的情況

Paste_Image.png
else if (length == 4) {
//設(shè)置為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);
}

Paste_Image.png
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);
}

Paste_Image.png

Paste_Image.png
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);