33

私はGridLayout5列と3行を持っています。これで、任意の子ビューを挿入できるようになりました。これはすばらしいことです。さらに良いのは、columnSpan=2アイテムを 2 列にまたがるように割り当てることができることです (rowSpan と同じ)。

問題は、rowSpan または columnSpan をプログラムで (実行時に) 割り当てることができないことです。一部の検索では、次のようなものが提案されました。

layoutParams.columnSpec = GridLayout.spec(0, columnSpan);

しかし、spec のパラメータ (start と size) の意味がよくわかりません。この時点では、ドキュメントも非常に貧弱です。

どんな助けでも大歓迎です!

4

5 に答える 5

46
    GridLayout gridLayout = (GridLayout)findViewById(R.id.tableGrid);

    gridLayout.removeAllViews();

    int total = 12;
    int column = 5;
    int row = total / column;
    gridLayout.setColumnCount(column);
    gridLayout.setRowCount(row + 1);
    for(int i =0, c = 0, r = 0; i < total; i++, c++)
    {
        if(c == column)
        {
            c = 0;
            r++;
        }
        ImageView oImageView = new ImageView(this);
        oImageView.setImageResource(R.drawable.ic_launcher);
        GridLayout.LayoutParams param =new GridLayout.LayoutParams();
        param.height = LayoutParams.WRAP_CONTENT;
        param.width = LayoutParams.WRAP_CONTENT;
        param.rightMargin = 5;
        param.topMargin = 5;
        param.setGravity(Gravity.CENTER);
        param.columnSpec = GridLayout.spec(c);
        param.rowSpec = GridLayout.spec(r);
        oImageView.setLayoutParams (param);
        gridLayout.addView(oImageView);
    }

この画像を見てください-必要に応じて行と列の数を変更できます

于 2013-02-05T19:27:05.580 に答える
6

プログラムで約2セルの列スパンを変更し、次のコードで膨張させた後:

GridLayout.LayoutParams itemLP = (GridLayout.LayoutParams)gridItemV.getLayoutParams();
itemLP.columnSpec = GridLayout.spec(0, 2);
gridItemV.setLayoutParams(itemLP);

setLayoutParams重要なのは変更後の呼び出しcolumnSpec です。それがあなたにも役立つことを願っています

于 2013-08-12T00:16:25.663 に答える