0

我正在尝试将大量按钮连续添加到屏幕上。这些按钮在 TableLayout 中设置。我已经搜索了多个这样的地方: Calculate screen size in android试图找到一种方法来设置多个按钮(1 到 9 之间)的大小,以便它们都适合一个屏幕。按钮是这样动态创建的:

    // put values into btn array
    for (int i = 0; i < row; i++) {
        tr = new TableRow(this);
        for (int j = 0; j < col; j++) {
            b = new Button(this);
            b.setOnClickListener(this);
            b.setText(bArray[j][i] + "");
            b.setTag(j + "," + i);
            tr.addView(b);
        }
        table.addView(tr);
    }

注意:变量 row 和 col 设置为相同的值(数字 1 到 9)。TableLayout 在 xml 中的 RelativeLayout 中设置,如下所示:

<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"
tools:context=".MainActivity" >

<TableLayout
    android:id="@+id/tableLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" >


</TableLayout>

编辑:按钮是水平的。

4

1 回答 1

1

好吧,你可以做很多不同的事情。很难从你的问题中确切地说出你想要什么,但我会抛出一些选项。(我不知道这些按钮的走向,所以我假设是垂直的)

  1. 一个简单的方法是找到高度并将其除以按钮的数量。类似的东西b.setHeight(this.getHeight()/numButtons)

  2. 您可以简单地将包装内容属性应用于按钮的高度。这只会占用最少的空间。

  3. 使用 aScrollView这样您就不必担心高度了。

  4. 最后,您可以将每个按钮match_parent设置为并将它们layout_weight的每个设置为相等。 我会推荐这种方法。它可能是最简单和最不容易出错的。

#4 上的雕刻

随着按钮水平移动,您需要将按钮的宽度设置MATCH_PARENTlayout_weight一个常数(例如 0.5)。这将使所有按钮以相等的宽度在父级上展开。

于 2013-01-28T08:28:53.477 回答