【问题标题】:How do I achieve square layout and buttons in main.xml?如何在 main.xml 中实现方形布局和按钮?
【发布时间】:2010-10-30 12:09:13
【问题描述】:

我想要一个包含 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。)

【问题讨论】:

  • 我想知道你在我的问题上编辑了什么。现在我注意到您将二次方更改为平方。这就是为什么我没有发现任何有用的东西!现在我发现了这个问题:stackoverflow.com/questions/2948212/… - 似乎没有办法单独使用 XML,我必须以编程方式进行......

标签: android android-widget android-layout


【解决方案1】:

您最好只作为自定义布局管理器执行此操作。从 ViewGroup 子类化并实现所需的布局代码。如果您正在尝试执行通用布局算法(您不是),那么实现自定义布局管理器非常简单。
例如,请参阅平台的 AbsoluteLayout 作为简单布局管理器的示例:https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/AbsoluteLayout.java

【讨论】:

    【解决方案2】:

    我有两个想法。

    两者都与 hackbod

    的建议非常相似

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

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

    可能只创建一个 SquareTableLayout 更容易

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        您需要查看TableLayout.

        【讨论】:

        • o_O 它应该如何帮助?!只提供该链接的参考,他可以在其中阅读答案:) 我还没有找到它
        猜你喜欢
        • 2012-06-18
        • 1970-01-01
        • 2011-02-26
        • 1970-01-01
        • 2021-04-14
        • 2011-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多