如何在main.xml中实现方形布局和按钮?

时间:2010-10-30 12:09:13

标签: android android-widget android-layout

我想要一个5次5按钮的布局。它们中的每一个都应具有相同的宽度和高度(它们应该是正方形)。我希望整个矩阵使用屏幕宽度(或高度,取决于旋转)。

我目前在Java代码中“手动”执行此操作:

for (int y=0; y<5; y++) {
    TableRow tr = new TableRow(this);
    for (int x=0; x<5; x++) {
        Button b = new Button (this);
        ...
        tr.addView(b, 60, 60);
    }
    layout.addView(tr);
}

这可以通过首先获得屏幕宽度然后除以5来改进,以除去这个文字60.但我想知道如何在res / layout XML文件中执行此操作?

如何指定高度与宽度相同? (我可以将宽度设置为match_parent。)

4 个答案:

答案 0 :(得分:2)

最好将此作为自定义布局管理器。来自ViewGroup的子类并实现所需的布局代码。如果您尝试使用通用布局算法(不是这样),则实现自定义布局管理器非常简单。
例如,请参见平台的AbsoluteLayout作为简单布局管理器的示例:https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/AbsoluteLayout.java

答案 1 :(得分:0)

我有两个想法。

两者都非常类似于 hackbod

的建议

您可以创建类似SquareButton的扩展Button或SquareTableLayout来扩展TableLayout,而不是从ViewGroup实现子类。

覆盖构造函数类,以便将宽度或高度值替换为它们的最小值。我不确定,但我想,你将能够在XML-Description中使用新的布局。

可能只创建一个SquareTableLayout

更容易

然后将TableLayout中所有元素的宽度和高度设置为0dip,将所有元素的权重设置为1.

假设你的表中有NxN个元素,那么由于相同的重量,它们都会得到相同的宽度和相同的高度。

答案 2 :(得分:0)

使用表格...这样所有按钮的宽度都相同。你可以相应地改变高度

答案 3 :(得分:-1)

您需要查看TableLayout.