1.ViewGroup
一个界面只能有一哥View,所以我们需要用ViewGroup来包裹着其他的View。如果不使用一个View的话,那么程序就会报错。
那么为什么会这样呢?根据我的猜想,我认为,是因为可能是为了后面的组件复用更加的方便。因为如果不是这样一个页面只有一个View,那么如果和别的界面组合在一起的时候,如果一个元素在上一层的时候没有父亲,组合起来的时候又要根据父元素定位,那么这个定位就如何确定呢?
所以干脆就直接一个页面一个父元素,简单又干练。

View之间的关系:父亲,兄弟,孩子
通过父亲关系的View,我们可以实现View与View的组合,这样来提高我们的组件复用率
通过兄弟View,我们可以实现多个View的并列。
而孩子View则是与父亲View相匹配的,功能相同。
2.布局的更具体的内容
- 2.1 线性布局
线性布局默认是垂直布局,决定它如何布局的是orientation这个属性。
如果我们要使用水平布局,改变它的属性即可。
那如果我们要实现对角线布局,就是斜着布局要怎么做呢?
这样就得通过使用三个线性布局加它的layout_weight来实现斜着布局。


- 2.2 子视图的宽度
子视图的宽度有三种方式,第一种是绝对的宽度,可以写上200dp,另外一种就是warp_content,由内容决定宽度,最后一种是与父元素保持一致。
同样的,高度也是一样的设置方式。

在平板上布局,要解决自动平衡的问题,应该使用layout weight来实现,其实对应的就是html5中的flex布局。

- 2.3 相对布局
相对布局是通过对父元素的位置来计算自己的位置,通过各种属性的设置,来实现更加灵活的布局。
例如可以设置与父元素的上边缘对其,左边缘对齐等。

- 2.4 padding 和 margin
用于让我们的界面更好看的呈现出来,比如说边框留白等。
与html5相同的,margin和padding只改变这个元素与别的元素的位置,而不改变这个元素本身的大小。所以,如果我们设置了一个元素的它的宽度是固定的,那么在设置padding的话,文字就会往中间挤。
网友评论