Layout就是布局管理器,所有的布局管理器的基类都是ViewGroup类。
ViewGroup的各种set方法对应着Layout的XML属性,即在XML布局文件中定义layout的属性;而ViewGroup还有两个内部类,是用来控制放在该布局管理器中的组件的,对应着XML布局文件中定义在layout里面的各种组件(Button、TextView等)。
1、LinearLayout
LinearLayout支持的常用XML属性 (1)baselineAligned (2)divider (3)gravity (4)orientation |
其子元素支持的常用XML属性 (1)layout_gravity (2)layout_weight |
注意:有些XML属性名前有layout_,而有些没有,就比如layout_width和width的区别,一个组件有实际的大小,所以layout_width的值是fill_parent、wrap_parent和wrap_content但也有布局的方式,当布局的方式不同时,即使是大小相同的两个组件也有不一样的大小效果。另关于gravity和layout_gravity的区别可以参阅http://blog.csdn.net/dekunchenivan/article/details/6718678?reload
2、TableLayout
TableLayout支持的常用XML属性
(1)collapseColumns
(2)shrinkColumns
(3)stretchColumns
(1)collapseColumns
(2)shrinkColumns
(3)stretchColumns
3、FrameLayout
FrameLayout支持的常用XML属性
(1)foreground
(2)foregroundGravity
(2)foregroundGravity
4、RelativeLayout
RelativeLayout支持的常用XML属性 (1)gravity (2)ignoreGravity |
其子元素支持的常用XML属性 (1)layout_centerHorizontal (2)layout_centerVertical (3)layout_centerInParent (4)layout_alignParentBottom (5)layout_alignParentTop (6)layout_alignParentLeft (7)layout_alignParentRight (8)layout_toLeftOf (9)layout_toRightOf (10)layout_above (11)layout_below (12)layout_alignTop (13)layout_alignBottom (14)layout_alignRight (15)layout_alignLeft |
5、GridLayout(Android 4.0 新增的)
RelativeLayout支持的常用XML属性 (1)alignmentMode (2)columnCount (3)rowCount (4)columnOrderPreserved (5)rowOrderPreserved (6)useDefaultMargins |
其子元素支持的常用XML属性 (1)layout_column (2)layout_row (3)layout_columnSpan (4)layout_rowSpan (5)layout_gravity |
注意:并不是所有的属性都可以通过set方法设置的,例如
(1)layout_column
(2)layout_row
(3)layout_columnSpan
(4)layout_rowSpan
这四个属性就不可以。
(2)layout_row
(3)layout_columnSpan
(4)layout_rowSpan
这四个属性就不可以。
要这样:
GridLayout.Spec rowSpec = new GridLayout.Spec(3);
GridLayout.Spec columnSpec = new GridLayout.Spec(4);
GridLayout.LayoutParams params = new GridLayout.LayoutParams(rowSpec,columnSpec);
gridLayout.addView(btn,params); //gridLayout和btn都已定义过