Установите 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());

person Cilenco    schedule 19.05.2013    source источник


Ответы (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)));
person Craig McMahon    schedule 28.01.2014
comment
И как мне переместить представление, скажем, (0,0)? - person Denny; 18.02.2018
comment
Разве это не было бы просто GridLayout.spec(0, GridLayout.CENTER)? Также спасибо за то, что вы придерживаетесь одного вопроса почти полтора года! - person Craig McMahon; 12.07.2018