首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在main.xml中实现正方形布局和按钮?

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

Stack Overflow用户
提问于 2010-10-30 20:09:13
回答 4查看 2.7K关注 0票数 2

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

我现在用Java代码“手工”完成:

代码语言:javascript
复制
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。)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-10-31 16:29:12

我有两个想法。

两者都与hackbod的建议非常相似

你可以创建像SquareButton扩展按钮或者SquareTableLayout扩展TableLayout这样的东西,而不是从ViewGroup实现子类。

重写构造函数类,以便将宽度或高度值替换为两者中的最小值。我不确定,但我猜,您将能够在XML-Description中使用新的布局。

可能只创建一个SquareTableLayout会更容易

然后,只需将TableLayout中所有元素的宽度和高度设置为0,并将所有元素的权重设置为1。

假设您的表中有NxN元素,那么由于相同的宽度,它们都将获得相同的宽度和高度。

票数 0
EN

Stack Overflow用户

发布于 2010-10-31 04:06:21

你最好作为一个自定义布局管理器来做这件事。来自ViewGroup的子类并实现所需的布局代码。如果你想做一个通用的布局算法(其实你不是),实现一个定制的布局管理器是非常简单的。

例如,请参阅平台的AbsoluteLayout作为简单布局管理器的示例:https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/AbsoluteLayout.java

票数 2
EN

Stack Overflow用户

发布于 2010-11-22 04:24:52

使用表格...这样所有按钮的宽度都是一样的。您可以相应地更改高度

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4058618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档