Как добавить элемент управления button в xml-представление android во время выполнения?
У меня есть макет Android xml, main.XML. Я хотел бы добавить элементы управления в этот макет во время выполнения (я хотел бы добавить ряд дополнительных линейных макетов, содержащих элементы управления buttons). Могу ли я это сделать, и если да, то как?
спасибо
6 ответов
Я вижу ошибку, которую вы делаете здесь
LinearLayout mainLayout = (LinearLayout) findViewById(R.layout.main);
вы r принимая макет как объект Linearlayout, вы должны взять идентификатор LinearLayout
попробуй такое
LinearLayout lnr = (LinearLayout) findViewById(R.id.LinearLayout01);
Button b1 = new Button(this);
b1.setText("Btn");
lnr.addView(b1);
вы можете добавить элементы управления программно, если вы хотите в коде, или даже другой XML с видом и надувателем.
здесь вы можете прочитать основы: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 для объекта view, т. е.
container.addView(buttonsLayout);
this.setContentView(view);
вы можете сделать это довольно легко, установив идентификатор макета, на который вы хотите добавить представления. Скажи свое главное.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
содержащий кнопки, которые вам нужны. Это можно сделать программно или путем раздувания представления, определенного в 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);
Это может помочь вам