Java 以编程方式向布局中添加多个按钮

Java 以编程方式向布局中添加多个按钮,java,android,xml,Java,Android,Xml,我目前正在以编程方式将按钮添加到我的布局中,并将其添加到线性布局中。在我的按钮超出屏幕宽度之前,这项功能非常有效。有没有办法让他们智能地转到下一行 XML: 此代码可以工作,但在添加第三个按钮后,它开始离开屏幕。如有任何建议,将不胜感激 完成此操作后,运行4次: 完成此操作后,运行10次: 线性布局仅在单个方向上展开(在您的情况下为水平),因此无法自动“包裹”。如果你想要一个滚动条,你可以把它封装在一个滚动视图中,但是它们仍然在一行中 与您正在做的事情更匹配的是GridView()。您提供了一

我目前正在以编程方式将按钮添加到我的布局中,并将其添加到线性布局中。在我的按钮超出屏幕宽度之前,这项功能非常有效。有没有办法让他们智能地转到下一行

XML:

此代码可以工作,但在添加第三个按钮后,它开始离开屏幕。如有任何建议,将不胜感激

完成此操作后,运行4次:

完成此操作后,运行10次:


线性布局仅在单个方向上展开(在您的情况下为水平),因此无法自动“包裹”。如果你想要一个滚动条,你可以把它封装在一个滚动视图中,但是它们仍然在一行中

与您正在做的事情更匹配的是GridView()。您提供了一个ListAdapter,它用组织到网格中的条目填充它


这里有一个很好的GridView示例:

Android SDK中有一个示例(您可以通过常见的4.0虚拟机->API演示->动画来访问它)并查找它(我认为它被称为自定义布局或类似的东西)。在该示例中,您可以看到如何在布局中添加和包装按钮,而不会出现不良拉伸。你应该看看
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >



    <LinearLayout

        android:id="@+id/linearLayout1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"

        android:orientation="horizontal"

        android:layout_alignParentTop="true" >

    </LinearLayout>



    <Button

        android:id="@+id/button1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentBottom="true"

        android:layout_alignParentRight="true"

        android:onClick="doThis"

        android:text="Button" />



</RelativeLayout>
public void doThis(View view){

Button myBtn = new Button(this);

LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout1);

myBtn.setText("hello");

layout.addView(myBtn);
}