缩放动态按钮

时间:2013-01-28 05:06:45

标签: android screen scale android-tablelayout

我正在尝试将大量按钮连续添加到屏幕上。按钮在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);
    }

注意:vars 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>

编辑:按钮正在水平移动。

1 个答案:

答案 0 :(得分:1)

嗯,你可以做很多不同的事情。从你的问题中很难准确地说出你的意思,但我会抛出一些选择。 (我不知道这些按钮的走向,所以我假设是垂直的)

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

  2. 的内容
  3. 您只需将包装内容属性应用于按钮的高度即可。这将占用所需的最小空间。

  4. 使用ScrollView,这样您根本不必担心高度。

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

  6. #4

    上的气化

    当按钮水平移动时,您需要将按钮的宽度设置为MATCH_PARENT,将layout_weight设置为常数(例如0.5)。这将使所有按钮在父级上展开,宽度相等。