Как я могу установить строку и столбец программно для представления в GridLayout? [Дубликат]

C имеет концепцию неопределенного поведения, то есть некоторые языковые конструкции синтаксически верны, но вы не можете предсказать поведение при запуске кода.

Насколько мне известно, стандарт не явно , почему существует понятие неопределенного поведения. На мой взгляд, это просто потому, что разработчики языка хотели, чтобы в семантике была некоторая свобода действий, вместо того, чтобы требовать, чтобы все реализации обрабатывали целочисленное переполнение точно таким же образом, что, скорее всего, наложило бы серьезные затраты на производительность, они просто оставили поведение undefined, так что, если вы пишете код, который вызывает переполнение целых чисел, все может случиться.

Итак, имея в виду, почему эти «проблемы»? Язык ясно говорит, что определенные вещи приводят к неопределенному поведению . Нет проблем, нет «необходимости». Если неопределенное поведение изменяется, когда объявлена ​​одна из вовлеченных переменных volatile, это ничего не доказывает или не изменяет. Это undefined ; вы не можете рассуждать о поведении.

Ваш наиболее интересный пример, один с

u = (u++);

является примером неопределенного поведения в текстовой книге (см. запись Википедии в точек последовательности ).

12
задан Cilenco 19 May 2013 в 23:27
поделиться

2 ответа

Эквивалент 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)));
16
ответ дан Craig McMahon 26 August 2018 в 20:44
поделиться

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

GridLayout gridLayout = new GridLayout(this);
gridLayout.setColumnCount(2);
gridLayout.setRowCount(4);
-2
ответ дан icastell 26 August 2018 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: