Как добавить элемент управления кнопками в андроид xml-представление во время выполнения?

У меня есть формат android xml, main.xml. Я хотел бы добавить элементы управления к этому макету во время выполнения (я хотел бы добавить ряд дополнительных линейных макетов, содержащих элементы управления кнопками). Могу ли я это сделать, и если да, то как?

благодаря

Я вижу ошибку, которую делает ур здесь

LinearLayout mainLayout = (LinearLayout) findViewById(R.layout.main); 

Вы принимаете макет как объект Linearlayout, вы должны взять идентификатор LinearLayout

Попробуй это

 LinearLayout lnr = (LinearLayout) findViewById(R.id.LinearLayout01); Button b1 = new Button(this); b1.setText("Btn"); lnr.addView(b1); 

Вы можете добавлять элементы управления программно, если хотите, в свой код или даже другой XML с представлением и Inflater.

Здесь вы можете прочитать основы: http://developer.android.com/guide/topics/ui/declaring-layout.html

Хорошо, у меня есть, чтобы работать.

Шаги следующие: сначала раздуйте xml-макет, то есть,

 View view = View.inflate(this, R.layout.main, null); 

Затем создайте экземпляр объекта-контейнера из макета xml в класс ViewGroup, т. Е.

 ViewGroup container = (ViewGroup) view.findViewById(R.id.myContainer); 

Затем создайте объект linearLayout, создайте и добавьте на него все необходимые элементы управления, добавьте linearLayout в объект-контейнер и используйте setContentView в объекте представления, т. Е.

 container.addView(buttonsLayout); this.setContentView(view); 

Вы можете сделать это довольно просто, установив id в макет, на который вы хотите добавить виды. Скажем, ваш main.xml выглядит так:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/label" android:layout_width="fill_parent"/> <LinearLayout android:id="@+id/container" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> </LinearLayout> </LinearLayout> 

Предположим, что вы хотите добавить свои дополнительные представления в LinearLayout с id id/container . В методе onCreate вы можете получить этот объект для последующего использования:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContainer = (ViewGroup)view.findViewById(R.id.container); } 

Теперь вы настроены на добавление других представлений в ваш контейнер ViewGroup :

 LinearLayout theButtons = getButtons() mContainer.addView(theButtons); 

В методе getButtons вам необходимо создать LinearLayout содержащую LinearLayout вам кнопки. Либо вы делаете это программно, либо раздуваете представление, определенное в XML-файле. См. LayoutInflater.inflate .

Просто попробуйте это:

 LinearLayout mainLinearLayout = (LinearLayout) findViewById(R.layout.llmain); 

Теперь динамически создавайте кнопку

  Button btn1 = new Button(this); btn1.setText=("Button 1"); mainLinearLayout .addView(btn1); 

Теперь, если вы хотите добавить onether linearlayout, то добавьте его ниже кнопки, тогда

  LinearLayout llinner = new LinearLayout(this); Button btn2 = new Button(this); btn2.setText=("Button 2"); mainLinearLayout .addView(btn2); llinner.addView(btn2 ); mainLinearLayout .addView(llinner); 

Попробуй это :

 LinearLayout ll =(LinearLayout)findViewById(R.id.linlay); Button b = new Button(this); b.setText("Hello"); l.addView(b); 

Это может помочь вам