Android API 25 (Android 7.1.1 API)
GridLayout
public class GridLayout
extends ViewGroup
Added in API level 14
java.lang.Object
↳android.widget.GridLayout
【概述】
该布局把子视图存放在一个矩形网格中。
网格是由被无数虚细线分割成多个单元格的可视区域组成。在整个API中,网格线由网格索引引用。一个N列的网格在运行中包含0到N的N+1个网格索引,不管怎么配置GridLayout, 网格索引0固定到网格容器的前边缘,网络索引N固定到容器的后边缘(考虑填充后)。
【行和列的规格】
子元素占据一个或多个连续单元格,由它们的rowSpec和columnSpec布局参数定义。每个规范定义要被占用的行或列的集合;以及如何在所得到的细胞群中比对儿童。虽然单元格在GridLayout中通常不重叠,但GridLayout不会阻止定义的孩子占用相同的单元格或单元格组。然而,在这种情况下,不能保证在布局操作完成之后孩子本身不会重叠
【默认单元格分配】
如果子节点未指定其希望占用的单元格的行和列索引,GridLayout将使用:orientation,rowCount和columnCount属性自动分配单元格位置。
【空间】
子级之间的空间可以通过使用专用空间视图的实例或通过设置leftMargin,topMargin,rightMargin和bottomMargin布局参数来指定。当设置了useDefaultMargins属性时,将根据平台的主要UI样式指南自动分配儿童的默认边距。如此定义的每个边缘可以通过对适当的布局参数的分配来独立地重写。默认值通常在组件之间产生合理的间隔,但是值可以在平台的不同版本之间改变。
【多余的空间分布】
从API 21,GridLayout的超额空间分布适应重量的原则。在没有指定权重的情况下,遵守先前的约定,并且如果它们的视图在它们的组中指定了某种形式的对齐,则将列和行视为灵活的。
视图的灵活性因此受到其对齐的影响,而对齐通常通过设置孩子的布局参数的gravity属性来定义。如果沿给定轴线定义weight或alignment,则该部件在该方向上被认为是柔性的。如果没有设置weight或alignment,则该组件被假定为不灵活。
同一行或列组中的多个组件被视为并行操作。这样的组只有在其中的所有组件都是灵活的时才是灵活的。位于公共边界两侧的行组和列组反而被认为是串行动作。由这两个元件制成的复合组是柔性的,如果其元件之一是柔性的。
为了使列拉伸,确保其中的所有组件限定weight或gravity。为了防止色谱列伸展,请确保色谱列中的某个组件未定义weight或gravity。
当灵活性的原理不提供完全消歧时