美文网首页
GridLayout 使用

GridLayout 使用

作者: 浩运 | 来源:发表于2016-12-06 19:16 被阅读0次

    最近要实现如下效果。根据数据个数不同,进行不同的排列。

    3条数据时如下

    Paste_Image.png

    配置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个数据的情况

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

    相关文章

      网友评论

          本文标题:GridLayout 使用

          本文链接:https://www.haomeiwen.com/subject/bysrmttx.html