我正在尝试将大量按钮连续添加到屏幕上。按钮在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>
编辑:按钮正在水平移动。
答案 0 :(得分:1)
嗯,你可以做很多不同的事情。从你的问题中很难准确地说出你的意思,但我会抛出一些选择。 (我不知道这些按钮的走向,所以我假设是垂直的)
一种简单的方法是找到高度并将其除以按钮数。类似b.setHeight(this.getHeight()/numButtons)
您只需将包装内容属性应用于按钮的高度即可。这将占用所需的最小空间。
使用ScrollView
,这样您根本不必担心高度。
最后,您可以将每个按钮设置为match_parent
,并将每个layout_weight
设置为相等。 我会推荐这种方法。它可能是最简单且最不容易出错的。
#4
上的气化当按钮水平移动时,您需要将按钮的宽度设置为MATCH_PARENT
,将layout_weight
设置为常数(例如0.5)。这将使所有按钮在父级上展开,宽度相等。