Set layout_column and layout_row in GridLayout pro

2019-01-14 22:45发布

问题:

I have a GridLayout (not GridView) where I want to add some views with a special row and column inex. In XML I can set the View with:

<TextView
    android:id="@+id/textView1"
    android:layout_column="2"
    android:layout_row="4"
    android:text="Large Text" />

But how can I set the attributes layout_column and layout_row programmatically? I want something like this:

GridLayout grid = new GridLayout(getActivity());

grid.setColumn(2);
grid.setRow(4);

grid.addView(new Button(getActivity());

回答1:

The equivalent of layout_column and layout_row, as with all layout_... parameters, is to be found as a parameter of a subclass of LayoutParams.

In this case it's GridLayout.LayoutParams, and we use it like this (for a 2x2 grid with a subview in the final row and column, centred within the cell):

gridLayout.setColumnCount(2);
gridLayout.setRowCount(2);

gridLayout.addView(subview, new GridLayout.LayoutParams(
                              GridLayout.spec(1, GridLayout.CENTER),
                              GridLayout.spec(1, GridLayout.CENTER)));


回答2:

You have to do something like this:

GridLayout gridLayout = new GridLayout(this);
gridLayout.setColumnCount(2);
gridLayout.setRowCount(4);