Android的布局对象
Android的布局管理控件用于把多个控件集成在一个用户界面中。Android常见的布局对象有:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、TableLayout(表格布局)和AbsoluteLayout(绝对布局),它们都继承了ViewGroup,作为各种不同布局管理模型的容器,它们都提供了各自独到的功能。(1)Linea
Android的布局管理控件用于把多个控件集成在一个用户界面中。Android常见的布局对象有:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、TableLayout(表格布局)和AbsoluteLayout(绝对布局),它们都继承了ViewGroup,作为各种不同布局管理模型的容器,它们都提供了各自独到的功能。
(1)LinearLayout 线性布局
LinearLayout是一个最常用的基础布局对象,它以单一方向对其中的显示对象进行排列显示,如以垂直排列显示,则布局管理器中将只有一列;如以水平排列显示,则布局管理器中将只有一行。同时,它还可以对个别的显示对象设置显示比例。
LinearLayout布局可以实现水平布局和垂直布局,它通过设置android:orientation属性将内部的所有子视图以横向或纵向进行排列。如果将布局方向设置为“vertical”,则表明垂直方向布局;设置为“horizontal”则表示水平方向布局。在LinearLayout中还可以设置内部子视图的方位(gravity),Gravity是一个排列属性,可以通过设置它的值为left、center或right而达到将视图放在父视图的左边、中间或右边的地方。
将多个横向的LinearLayout以当成子视图放进一个纵向的LinearLayout中,这样就形成一个类似Table的布局,不过如果是这种情况,最好是用TableLayout比较合适。
(2)RelativeLayout 相对布局
RelativeLayout是相对布局,允许通过指定显示对象相对于父容器或其他兄弟控件的相对位置结合margin、padding来进行布局。例如一个按钮可以放于另一个按钮的右边,或者可以放在布局管理器的中央。RelativeLayout是一个比较复杂的布局管理器对象,它是定义各个视图相对的位置来管理布局,它一个好用的地方是嵌套的布局层次少。
RelativeLayout布局的属性说明:
①相对于给它ID兄弟控件位置关系属性,属性的取值为相对引用控件的ID
android:layout_above: 将该控件的底部置与给定ID的控件的上方。
android:layout_below: 将该控件的底部置与给定ID的控件的下方。
android:layout_toLeftOf: 将该控件的右边缘与给定ID的控件左边缘对齐。
android:layout_toRightOf: 将该控件的左边缘与给定ID的控件右边缘对齐。
android:layout_alignBaseline:将该控件的baseline与给定ID的控件基准线对齐。
android:layout_alignTop: 将该控件的顶部边缘与给定ID的控件顶部边缘对齐。
android:layout_alignBottom: 将该控件的低部边缘与给定ID的控件底部边缘对齐。
android:layout_alignLeft: 将该控件的左边缘与给定ID的控件左边缘对齐。
android:layout_alignRight: 将该控件的右边缘与给定ID的控件右边缘对齐。
②相对于父容器的位置关系属性,属性的取值为true或false
android:layout_alignParentTop: 如果取值为true,将该控件顶部与其父控件顶部对齐。
android:layout_alignParentBottom: 如果取值为true,将该控件底部与其父控件的底部对齐。
android:layout_alignParentLeft: 如果取值为true,将该控件左部与其父控件左部对齐。
android:layout_alignParenRight: 如果取值为true,将该控件右部与其父控件右部对齐。
③居中位置设置,属性的取值为true或false
android:layout_centerHorizontal: 如果取值为true,将该控件置于水平居中。
android:layout_centerVertical: 如果取值为true,将该控件置于垂直居中。
android:layout_centerInParent:如果取值为true,将该控件置于父控件的中央。
④指定偏移(外边距)量的属性
android:margin:设置控件的偏移量
android:layout_marginTop: 设置控件上边的偏移值。
android:layout_marginBottom: 设置控件下边的偏移值。
android:layout_marginLeft: 设置控件左边的偏移值。
android:layout_marginRight: 设置控件右边的偏移值。
⑤指定填充(内边距)量的属性
android:padding:设置控件内部内容的填充值。
android:paddingTop:设置空间内部内容上边的填充值。
android:paddingBottom:设置控件内部内容下边的填充值。
android:paddingLeft:设置控件内部内容左边的填充值。
android:paddingRight:设置控件内部内容右边的填充值。
【注意】:区分margin和padding的不同,首先margin代表的是偏移,例如marginleft="10dp",表示控件离容器左边缘偏移10dp。而padding代表的则是填充,
而填充的对象针对的是控件中的内容,例如TextView中的文字,例如为TextView设置paddingleft="5dp",则是在控件里的内容的左边填充5dp的空间。margin
针对的是容器中的控件,而padding针对的是控件中的内容,要区分开来。父容器定位属性示意图如图1所示。
图1 父容器定位属性示意图
⑥其他常用属性
android:grivity:指定控件内容文本的对齐位置,例如居中、居中等位置,指的是控件中的文本位置并不是控件本身。例如android:gravity=”left“表示控件中的文本左显示。
ignoreGravity:设置了该属性为true的控件,将不受android:grivity属性设置的影响。
android:width:指定控件的宽度。
android:height:指定控件的高度。、
android:sigleLine:如果设置为true,则控件的内容在同一行中进行显示。
(3)FrameLayout 帧布局
FrameLayout是一个最简单的布局对象,它里面只显示一个显示对象。在屏幕上预留好一块空白的区域,所有的元素都被放置在FrameLayout区域的左上方,无法给这些元素
一个确切的位置,如果有很多值元素则会重叠在前一个元素上,最有最上面的元素能被看到,如果设置它的背景是透明的,则可以透过上面的元素看到下面的元素。
(4)TableLayout 表格布局
TableLayout布局以拥有任意行列的表格对显示对象进行布局,每个显示对象被分配到各自得单元格之中,但单元格的边框线不可见。
TableLayout布局管理器对象会将容器内部的字节点按照行列进行排序,它就像是html中的<table>节点。在TableLayout节点内部中声明<TableRow>将为table添加一行,
<TableRow>中的子视图将排成N列,如果<TableRow>内有N个子视图就将该行划分为N列。整个表的列是根据表格每行中最多有多少列来决定的,假如整个表格中有
2行3列,其中有一行为4列则表格将分为4列。TableLayout默认会将它的直接子节点当成一行,所以可以放置任意的View到TableLayout中,而且对于TableLayout的直
接子节点设置layout_width="wrap_content"属性将不会生效,因为默认它会重写成match_parent。
TableLayout还有一个特殊的属性:stretchColumns用来设置需要拉宽的列,因为有的列可能不会填满区域,为了布局的美观可以定义哪个列将进行拉宽。用逗号隔开的列值来指定哪些列需要拉宽,列值是从0开始的,如果需要拉升第2和第3列,你可以设置strechColumns="1,2"。同样的道理collapseColumns属性,这些用法都跟 stretchColumns一样。
(五)GridLayout 网格布局
GridLayout布局样式和LinearLayout样式一样,有水平和垂直两个方向的布局方式。即如果设置为垂直方向布局,则下一个单元格将会在下一行的同一位置或靠右一点的位置出现,而水平方向的布局,则意味着下一个单元格将会在单前单元格的右边出现,也有可能会跨越下一行,其原因是在GridLayout在布置中,定义每个子控件与以前使用布局中定义的方法有点不同,默认的是对所有的子控件使用wrap_content的方式,而不是显式声明宽度和高度或使用wrap_cenent和match_parent。
(六)AbsoluteLayout 绝对布局
AbsoluteLayout布局允许以坐标的方式,指定显示对象的具体位置,左上角的坐标原点为(0,0).其中第1个0代表x坐标,第2个0代表y坐标,向下及向右,坐标值变大。在AbsoluteLayout布局中子元素可以相互重叠,各个元素之间没有任何联系,控件可以在任意位置摆放,元素的位置通过android:layout_x和android:layout_y属性决定, 如果元素没有设置位置属性,则表示处于坐标原点位置,即屏幕的左上角位置。
(七)ScrollView 布局
由于移动终端的屏幕尺寸有限,经常会遇到在一个屏幕中无法将所有的控件或信息显示完整的情况,为了解决这样的问题,通常需要应用滚动布局方式来实现。
ScrollView的父类是FrameLayout,它拥有FrameLayout的特性,另外当ScrollView中拥有很多内容,屏幕无法显示完整时,会通过滚动条进行显示。ScrollView只支持垂直滚动。
更多推荐
所有评论(0)