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

时间:2013-07-01 23:20:33

标签: java android xml

我目前正以编程方式将按钮添加到我的布局到linearLayout。这很有效,直到我的按钮超出屏幕宽度。有没有办法让他们智能地翻转到下一行?

XML:

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

我的onClick代码:

public void doThis(View view){

Button myBtn = new Button(this);

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

myBtn.setText("hello");

layout.addView(myBtn);
}

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

doThis运行4次后:

enter image description here

doThis运行10次后:

enter image description here

1 个答案:

答案 0 :(得分:0)

LinearLayouts只在单一方向上扩展(在你的情况下是水平方向),所以它无法自动“包裹”。如果你想要一个滚动条,你可以将它封装在ScrollView中,但它们仍然会在一行中。

您正在做的更好的匹配是GridView(http://developer.android.com/reference/android/widget/GridView.html)。您提供了一个ListAdapter,它使用组织成网格的条目填充它。

这里有一个很好的GridView示例:http://www.mkyong.com/android/android-gridview-example/