【发布时间】:2018-02-25 16:55:35
【问题描述】:
谁能帮我理解 Nativescript 中使用的网格布局,尤其是 GridLayout? auto 后面的 (star) 究竟是什么意思?
<GridLayout rows="*, auto">
然后我遇到了这个更令人困惑的例子:
<GridLayout rows="*, auto, auto, auto, 2*">
我发现 Nativescript 的文档不太清楚。
【问题讨论】:
谁能帮我理解 Nativescript 中使用的网格布局,尤其是 GridLayout? auto 后面的 (star) 究竟是什么意思?
<GridLayout rows="*, auto">
然后我遇到了这个更令人困惑的例子:
<GridLayout rows="*, auto, auto, auto, 2*">
我发现 Nativescript 的文档不太清楚。
【问题讨论】:
文档说明如下:
表示行高的字符串值,用逗号分隔。排 高度可以是
absolute number、auto或*。一个号码 表示绝对行高,auto 使该行与它的一样高 最高的孩子,并且 * 使该行占据所有可用的垂直 空间。
我认为首先区分auto 和* 很重要,因为它们的作用不同。当您使用auto 作为值时,GridLayout 将获取具有最高高度值的子元素的高度并将其设为行的高度。因此,如果您有一个GridLayout,其中一行包含多列,一列高度为 20,一列高度为 30,另一列高度为 40,则该行的高度将为 40,并且该行中的列将匹配该高度。
如果您使用* 而不是auto,则GridLayout 将使用所有可用空间作为该行的高度。所以如果你的GridLayout的高度是100,那么行的高度也会是100。当你在星号前面放一个数字时,你基本上是在除法,所以如果你有rows="2*, *",第一行就会高度为GridLayout 的三分之二,第二行的高度为三分之一。
我不确定rows 属性的概念是否清楚,但为了澄清您是通过添加逗号来定义多行的高度,例如:<GridLayout rows="*, auto, auto, auto, 2*"> 包含五行的高度。在确定了auto高度的三列的高度后,第一行和最后一行将使用剩余空间。
NativeScript 文档包含一些图片来展示它的外观,可以在 here 找到。
【讨论】: