Вызов addView
- правильный ответ, но вам нужно сделать немного больше, чтобы заставить его работать.
Если вы создаете представление через конструктор (например, Button myButton = new Button();
), , вам нужно будет вызвать setLayoutParams
в недавно построенном представлении, передав экземпляр внутреннего класса LayoutParams родительского представления, прежде чем вы добавите вновь созданного ребенка в родительское представление.
Например, у вас может быть следующий код в вашей функции onCreate()
, если ваш LinearLayout имеет id R.id.main
:
LinearLayout myLayout = findViewById(R.id.main);
Button myButton = new Button(this);
myButton.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
myLayout.addView(myButton);
Важное значение имеет установка параметров LayoutParams. Для каждого представления требуется, по крайней мере, параметр layout_width и параметр layout_height. Также важно получить правильный внутренний класс. Я боролся с тем, чтобы получать представления, добавленные в TableRow, для правильной отображения, пока не выясню, что я не передавал экземпляр TableRow.LayoutParams в setLayoutParams дочернего представления.