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

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

谢谢

  • 如何在代码中将android:layout_alignParentLeft属性设置为imageview?
  • 所有屏幕的Android 3.2相同的布局
  • Android与重力的相对布局问题
  • Android中的自定义视图与XML布局
  • Android布局:如何避免嵌套的权重?
  • 在Android中显示TextView底部的屏幕
  • Android:四个方块的alignment
  • 将图像缩放到最大可用宽度,保持宽高比并避免ImageView额外的空间
  • 我看到你在这里做的错误

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

    这可能会帮助你