Проблема в том, что ваши кнопки не собираются автоматически переходить к следующей части экрана. Вы должны конкретно указать Android, как вы хотите, чтобы ваши представления были расположены. Вы делаете это, используя ViewGroups, такие как LinearLayout или RelativeLayout.
LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout_tags);
layout.setOrientation(LinearLayout.VERTICAL); //Can also be done in xml by android:orientation="vertical"
for (int i = 0; i < 3; i++) {
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
for (int j = 0; j < 4; j++) {
Button btnTag = new Button(this);
btnTag.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
btnTag.setText("Button " + (j + 1 + (i * 4)));
btnTag.setId(j + 1 + (i * 4));
row.addView(btnTag);
}
layout.addView(row);
}
Я предполагаю, что R.id.linear_layout_tags
является родительским LinearLayout вашего XML для этого действия.
По сути, вы здесь создаете LinearLayout, который будет содержать строку из четырех кнопок. Затем кнопки добавляются, и каждой из них присваивается номер в качестве их идентификатора. После добавления всех кнопок строка добавляется в макет вашей деятельности. Затем это повторяется. Это всего лишь некоторый псевдокод, но он, вероятно, будет работать.
Да, и в следующий раз обязательно уделите больше времени вашему вопросу ...
https://stackoverflow.com/questions/how-to-ask