Java 如何仅通过编程方式在android中添加动态网格布局?

Java 如何仅通过编程方式在android中添加动态网格布局?,java,android,gridview,grid-layout,programmatically,Java,Android,Gridview,Grid Layout,Programmatically,我想在android应用程序中只使用java代码动态添加布局,而不使用XML代码。请帮我做这个。提前谢谢。使用此代码,我做到了: 公众席 { 输出: 我得到的是: 我想要的是: 你能更具体一点吗?到目前为止你取得了什么成就?你可以使用recycler视图和recyclerView的StaggedGridLayoutManager来达到预期效果。有关更多信息,请参阅链接: LinearLayout.LayoutParams params = new LinearLayout.LayoutP

我想在android应用程序中只使用java代码动态添加布局,而不使用XML代码。请帮我做这个。提前谢谢。

使用此代码,我做到了:

公众席

{

输出:

我得到的是:

我想要的是:


你能更具体一点吗?到目前为止你取得了什么成就?你可以使用recycler视图和recyclerView的StaggedGridLayoutManager来达到预期效果。有关更多信息,请参阅链接:
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    params.setMargins(3,3,3,3);

    GridLayout gl = (GridLayout) findViewById(R.id.grid_main);

    int column =  4;
    int row = 5;
    int i_total = 4*5;
    int i_busSeatNo = 1;

    gl.setAlignmentMode(GridLayout.ALIGN_BOUNDS);
    gl.setColumnCount(column);
    gl.setRowCount(row + 1);

    CheckBox btn;

    for(int i =0, c = 0, r = 1; i < i_total; i++, c++)
    {
        if(c == column)
        {
            c = 0;
            r++;
            i_busSeatNo++;
        }

        if (r == c+1 ){
            i_busSeatNo = r;
        }
        btn  = new CheckBox(this);
        btn.setGravity(Gravity.CENTER);
        btn.setBackgroundResource(R.drawable.chbox);
        btn.setButtonDrawable(R.drawable.chbox);
        btn.setHeight(val_seat);
        btn.setWidth(val_seat);
        btn.setText(""+i_busSeatNo); //(r+" "+c); //r+" "+c
        int cnt = Integer.parseInt(r+""+c);
        btn.setId(cnt);
        final CheckBox finalBtn = btn;
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(DynamicBus.this,
                        "id: " + finalBtn.getId() + "\nNo: " + finalBtn.getText(),
                        Toast.LENGTH_SHORT).show();
            }
        });

        if(c != column-1) {
            i_busSeatNo = i_busSeatNo+5;
        }

        gl.addView(btn, i);

        GridLayout.LayoutParams param =new GridLayout.LayoutParams();
        param.height = val_seat;
        param.width = val_seat;
        param.rightMargin = 7;
        param.topMargin = 7;
        param.setGravity(Gravity.CENTER);
        param.columnSpec = GridLayout.spec(c);

        if (r==1)
        param.rowSpec = GridLayout.spec(r,1);
        btn.setLayoutParams (param);
    }

}