【问题标题】:Basic android GridLayout child-view placement基本的 android GridLayout 子视图放置
【发布时间】:2014-02-25 08:18:07
【问题描述】:

我已阅读文档,查看了一些示例代码。我仍然不明白如何正确使用 GridLayouts。我特别怀疑我不了解 Android 规范。

我现在想做的就是在 GridLayout 的 1 行中放置 2 个按钮。我该怎么做?

这就是我所拥有的:首先我创建规范。
//6 rows is the goal of this View
Spec rowSpec1 = GridLayout.InvokeSpec(0, 5, GridLayout.Center);
Spec colSpec1 = GridLayout.InvokeSpec(0);
Spec colSpec1 = GridLayout.InvokeSpec(0)
创建要添加的按钮:
Button bt1 = new Button(this._Context); Button bt2 = new Button(this._Context); //the this keyword is just referring to my class that extends GridLayout //Where I've stored the Activity's Context
现在让我们将按钮添加到网格中:
this.AddView(bt1, new GridLayout.LayoutParams(rowSpec1, colSpec1)); this.AddView(bt2, new GridLayout.LayoutParams(rowSpec1, colSpec2));

这样做的结果是我的 Android 设备左上角的一个按钮。如何以编程方式将这些按钮插入所需的位置?另外,我读过 Specs 实际上只是用于对齐目的,但我看到的代码看起来像是用于子视图的行和列放置;这就是我正在做的。有人可以以一种愚蠢的方式为我解释 Android 规格吗?谢谢大家!

【问题讨论】:

    标签: android xamarin android-gridlayout


    【解决方案1】:

    colSpec1 变量已经定义了两次,但我认为这是一个错字。

    假设你的意思是:

    Spec rowSpec1 = GridLayout.InvokeSpec(0, 5, GridLayout.Center);
    Spec colSpec1 = GridLayout.InvokeSpec(0);
    Spec colSpec2 = GridLayout.InvokeSpec(0);
    

    rowSpec1 变量从第 0 行开始,跨越 5 行。两个列规范都从第 0 列和第 1 列开始。放置按钮后,行和列完全匹配,因此按钮堆叠在一起。

    将 GridLayout 规范视为 GridLayout 单元格的一维。您需要拥有单元格的两个维度才能在其中显示视图。在 GridLayout 中放置项目时,您必须注意单元格不要重叠,除非您希望它们重叠。

    考虑到这一点,您可能会有更好的运气:

    Spec rowSpec1 = GridLayout.InvokeSpec(0, GridLayout.Center);
    Spec rowSpec2 = GridLayout.InvokeSpec(1, GridLayout.Center);
    Spec colSpec1 = GridLayout.InvokeSpec(0);
    Spec colSpec2 = GridLayout.InvokeSpec(0);
    

    由于您似乎不需要跨行,因此您可以定义大小为 1 的 rowSpec 变量。

    那么你应该可以添加视图了,

    this.AddView(bt1, new GridLayout.LayoutParams(rowSpec1, colSpec1));
    this.AddView(bt2, new GridLayout.LayoutParams(rowSpec2, colSpec2));
    

    【讨论】:

    • 感谢您的宝贵时间。我已经弄清楚了这一点,但我很感激你的努力。我花了一点时间来掌握这些规格。
    猜你喜欢
    • 1970-01-01
    • 2017-08-06
    • 2016-08-04
    • 1970-01-01
    • 2012-09-04
    • 2018-01-10
    • 2011-04-20
    • 2015-10-08
    • 1970-01-01
    相关资源
    最近更新 更多