如何在运行时添加button控件到android xml视图?

我有一个android xml布局,main.xml。 我想在运行时将控件添加到此布局(我想添加一系列包含button控件的其他线性布局)。 我可以这样做,如果是的话,怎么样?

谢谢

Solutions Collecting From Web of "如何在运行时添加button控件到android 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); 

您可以通过编程添加控件,如果您希望在代码中使用,或者使用View和Inflater,甚至可以添加其他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); 

然后创build一个linearLayout对象,创build并添加所需的任何控件,将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> 

让我们假设你想添加额外的视图到id为id/containerLinearLayout 。 在你的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方法中,您需要创build包含所需button的LinearLayout 。 您可以通过编程或通过膨胀在XML文件中定义的视图来执行此操作。 请参阅LayoutInflater.inflate

试试这个:

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

现在像这样dynamic地创buildbutton

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

现在如果你想添加onether linearlayout然后添加它下面的button,然后

  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); 

这可能会帮助你