Android - Как оставить пустое пространство в GridLayout - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть GridLayout (из библиотеки поддержки), где находятся два ряда кнопок.Все кнопки имеют ширину 2 и высоту 1. Первый ряд должен быть сдвинут на одну позицию вправо.Когда я это делаю, GridLayout работает так, как будто первая строка не смещена.

Вторая строка:

GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.rowSpec = GridLayout.spec(1, 1, 1);
params.columnSpec = GridLayout.spec(x, 2, 1);

Первая строка:

GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.rowSpec = GridLayout.spec(0, 1, 1);
params.columnSpec = GridLayout.spec(x + 1, 2, 1);

1 Ответ

0 голосов
/ 23 февраля 2019

Вы должны вставить фиктивные виды во все ячейки сверху и слева (начало).

for (int x = 0; x < gridLayout.getColumnCount(); x++) {
    GridLayout.LayoutParams params = new GridLayout.LayoutParams();
    params.rowSpec = GridLayout.spec(0, 1, 1);
    params.columnSpec = GridLayout.spec(x, 1, 1);
    params.setGravity(Gravity.FILL);
    params.width = 0;
    gridLayout.addView(new Space(this), params);
}
for (int y = 0; y < gridLayout.getRowCount(); y++) {
    GridLayout.LayoutParams params = new GridLayout.LayoutParams();
    params.rowSpec = GridLayout.spec(y, 1, 1);
    params.columnSpec = GridLayout.spec(0, 1, 1);
    params.setGravity(Gravity.FILL);
    params.width = 0;
    gridLayout.addView(new Space(this), params);
}
...