GridLayout 使用

最近要實現(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);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • GridLayout 使用 GridLayout 是一個強(qiáng)大的網(wǎng)格布局。 基本屬性 android:columnC...
    numqin閱讀 1,744評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,769評論 25 709
  • 我故意把床上的抱枕藏起來了 只因為 我想你夜里抱著的是我 我在你不在的時候怨恨哭泣 只因為 我想在你回來之前流光所...
    真水無香zswx閱讀 237評論 0 1
  • 待我老了 退出江湖,帶著香茗 歸隱一個情景悠然的鄉(xiāng)下 房前種茶,屋后種菜 沒有網(wǎng)絡(luò),沒有八卦 洗手做湯羹,花前月下...
    逆訊圖驢閱讀 349評論 0 0
  • 在男女平等的觀念影響下,經(jīng)過幾代人的努力,現(xiàn)在的女性從心理到生理都發(fā)生了巨大的進(jìn)化。曾經(jīng),她們只會想要安安穩(wěn)穩(wěn)的活...
    陌上背影閱讀 170評論 0 0

友情鏈接更多精彩內(nèi)容