1

我想创建一个多行按钮列表。像这样的东西:
在此处输入图像描述
但我想动态地做(在代码中)。有没有办法告诉布局自动执行此操作?或者我必须自己使用RelativeLayout.LayoutParams. 我可以通过代码做到这一点,但我应该控制很多事情,我想知道是否有另一种更简单的方法来做到这一点。例如,当当前行已满时,告诉布局在下一行中添加元素!

4

3 回答 3

1

您也可以使用 LinearLayout 执行此操作,并使用权重使所有按钮的大小相同。

至于你的问题:

我可以通过代码做到这一点,但我应该控制这么多事情,我想知道是否有另一种更简单的方法来做到这一点。例如,当当前行已满时,告诉布局在下一行中添加元素!

如果您测量屏幕宽度和高度并使用 View 类中的函数来确定该特定视图及其子视图的细节,这可能是可能的。

选择

但正如评论中提到的,还有其他视图可以用来解决您的问题,例如 GridView。

于 2012-08-07T09:03:25.017 回答
1

您还可以使用表格布局,

像这样在xml中创建第一行tabllayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >

        <Button
            android:id="@+id/goBack"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="6dp"
            android:layout_marginTop="12dp"
            />
    </LinearLayout>
<FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:layout_weight="0.80">

    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >


        <FrameLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="fill"
                    android:layout_weight="0.80"
                    android:background="#f0ffff" >
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TableLayout
                android:id="@+id/data_table"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_margin="2dp"
                android:background="#006400"
                android:orientation="vertical" >

                <TableRow
                    android:id="@+id/second"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent" >

                    <TextView
                        android:layout_width="105dp"
                        android:layout_height="fill_parent"
                        android:layout_margin="1dp"
                        android:background="@drawable/textbg"
                        android:gravity="center"
                        android:text="Number1"
                        android:textColor="#006400" >
                    </TextView>

                    <Button
                        android:layout_width="105dp"
                        android:layout_height="fill_parent"
                        android:layout_margin="1dp"
                        android:background="@drawable/textbg"
                        android:gravity="center"
                        android:text="Number2"
                        android:textColor="#006400" />

                    <TextView
                        android:layout_width="105dp"
                        android:layout_height="fill_parent"
                        android:layout_margin="1dp"
                        android:background="@drawable/textbg"
                        android:gravity="center"
                        android:paddingBottom="2dp"
                        android:paddingTop="2dp"
                        android:text="Distance"
                        android:textColor="#006400" >
                    </TextView>

                    <TextView
                        android:layout_width="105dp"
                        android:layout_height="fill_parent"
                        android:layout_margin="1dp"
                        android:gravity="center"
                        android:paddingBottom="8dp"
                        android:paddingLeft="8dp"
                        android:paddingRight="5dp"
                        android:paddingTop="8dp"
                        android:text="F/G/H/S"
                        android:textColor="#006400" >
                    </TextView>
                </TableRow>
            </TableLayout>
        </ScrollView>
        </FrameLayout>
    </HorizontalScrollView>
 </FrameLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="60dp"
            android:layout_marginTop="4dp"
            android:gravity="center"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/savescore"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                 />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

我为四个三个文本创建了这个 xml,并且单行中的按钮参考 onCreate 中的表

TableLayout extendeedTable = (TableLayout)findViewById(R.id.data_table); 

添加行

while (extendeedTable.getChildCount() > 1)
        {
            // while there are at least two rows in the table widget, delete
            // the second row.

            extendeedTable.removeViewAt(1);
        }

        // collect the current row information from the database and
        // store it in a two dimensional ArrayList


        // iterate the ArrayList, create new rows each time and add them
        // to the table widget.

// 这里的值是你想要的表中的行数

        for (int position=0; position < value ; position++)
        {
            TableRow tableRow= new TableRow(this);

            tableRow.setBackgroundDrawable(null);
//          ArrayList<Object> row = data.get(position);


            TextView idText = new TextView(this);
            idText.setText(Integer.toString(position + 1));
            idText.setGravity(Gravity.CENTER);
            idText.setTextColor(Color.BLACK);
            idText.setWidth(10);
            idText.setHeight(45);
            idText.setBackgroundResource(R.drawable.text2);

             tableRow.addView(idText);




             textOne = new Button(this);
            textOne.setText("CLUB");
            textOne.setBackgroundResource(R.drawable.text2);
            textOne.setGravity(Gravity.CENTER);
            textOne.setTextColor(Color.BLACK);//left top right bottom


            textOne.setWidth(10);
            textOne.setHeight(45);

            textOne.setId(1+position);
            tableRow.addView(textOne);

              allbtns.add(textOne);
//          textOne.setOnClickListener(this);

             textOne.setOnClickListener(new OnClickListener() {
                public void onClick(View arg0) {
                  // do something when the button is clicked

                    final Button button = (Button) arg0;

                    System.out.println("value  of button is      "+
                            button.getId());

                    dialog1.setTitle(" SELECT CLUB ");         






             textTwo = new EditText(this);
            textTwo.setText("");
            textTwo.setBackgroundResource(R.drawable.text2);
            textTwo.setGravity(Gravity.CENTER);
            textTwo.setTextColor(Color.BLACK);
            textTwo.setWidth(10);
            textTwo.setHeight(45);
            textTwo.setInputType(InputType.TYPE_CLASS_NUMBER);
           tableRow.addView(textTwo);
            allEds1.add(textTwo);
            textTwo.setId(position +1);


            textThree = new EditText(this);
            textThree.setText("");
            textThree.setWidth(10);
            textThree.setHeight(45);
            textThree.setTextColor(Color.BLACK);
            textThree.setBackgroundResource(R.drawable.text2);
            textThree.setGravity(Gravity.CENTER);
            textThree.setInputType(InputType.TYPE_CLASS_TEXT);
            tableRow.addView(textThree);
            allEds2.add(textThree);
            textThree.setId(position +1);

            extendeedTable.addView(tableRow);

        }

为此,我从这里得到了帮助

http://www.anotherandroidblog.com/2010/08/04/android-database-tutorial/7/

它的xml

http://www.anotherandroidblog.com/2010/08/04/android-database-tutorial/6/

于 2012-08-07T09:34:18.873 回答
1

经过更多的谷歌搜索,我终于找到了最好的方法。它是如此干净和简单,使用适配器和网格。感谢所有的答案

这是一个教程:为 Gridview(ButtonAdapter) 创建自定义适配器

于 2012-08-07T12:37:00.803 回答