Установите layout_column и layout_row в GridLayout программно

У меня есть GridLayout (а не GridView), где я хочу добавить некоторые виды с помощью специальной строки и столбца inex. В XML я могу установить представление с помощью:

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

Но как я могу установить атрибуты layout_column и layout_row программно? Я хочу что-то вроде этого:

GridLayout grid = new GridLayout(getActivity());

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

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

Ответ 1

Эквивалент layout_column и layout_row, как и для всех параметров layout_..., должен быть найден как параметр подкласса LayoutParams.

В этом случае он GridLayout.LayoutParams, и мы используем его как это (для сетки 2x2 с подвью в последней строке и столбце, центрированной внутри ячейки):

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

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

Ответ 2

Вам нужно сделать что-то вроде этого:

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