关于Android Layout里使用的一些组件属性。
(1)layout_width与layout_height
用于指定当前View的宽度与高度,这是不同布局管理器都包含的属性,可以指定固定值,也可以取match_parent与wrap_parent。前者match_parent用于表示当前控件的大小与父布局大小相同,也就是由父布局来决定当前控件的大小;后者wrap_parent用于表示让当前控件大小能够刚好容纳里面填充的内容,即让控件内容决定当前控件大小。一般推荐使用match_parent来作为控件大小,这样可以适配不同分辨率的图片。
(2)layout_margin与padding
layout_margin用于指定当前View边框的额外空间。通过设置这一属性可以分隔不同View。padding用于指定当前控件中的内容相对于View边框的距离。即如下图所示:
类似的有如下不同种类的属性:
layout_marginLeft | paddingLeft | 左边距 |
layout_marginRight | paddingRight | 右边距 |
layout_marginStart | paddingStart | 视情况同Left或Right |
layout_marginEnd | paddingEnd | 视情况同Left或Right |
layout_marginBottom | paddingBottom | 下边距 |
layout_marginTop | paddingTop | 上边距 |
layout_margin | padding | 四周边距,包括上下左右 |
其中,layout_marginStart与layout_marginEnd,是用于适配RTL(从右到左,Right-to-Left)UI模式的属性,对于不同书写习惯,View的开始有所不同,所以layout_marginStart相当于layout_marginLeft或是layout_marginRight,layout_marginEnd同理。默认的布局模式是从左向右,RTL的UI模式默认关闭。推荐使用Start与End来代替Left与Right。
Android 4.2中引入了由右到左文字的全面本地支持布局。在本地RTL支持下,您可以为所有用户带来完美的应用体验,不论他们的文字书写方向是由左至右还是由右至左。当用户切换系统语言到由右至左书写方式时,系统提供自动的应用UI布局和所有可视组件的镜像,包括文字元素的显示和输入。您的应用仅需极少改变即可支持RTL布局镜像。如果您的应用支持这一特性,只要在您应用的manifest文件中将所有的”Left/Right”布局属性改变为Start/End”即可。系统就会根据需要处理您的UI了。
(3)相对位置
用于确定RelativeLayout中的View与其他组件的相对位置。有如下几种不同属性。
layout_above | 使当前控件位于给出id控件的上方,上边缘对齐,默认父布局左边 |
layout_below | 使当前控件位于给出id控件的下方,下边缘对齐,默认父布局左边 |
layout_toLeftOf | 将该控件的右边缘和给定ID的控件的左边缘对齐,默认位于父布局的顶部 |
layout_toStartOf | 视情况同Left或Right |
layout_toRightOf | 将该控件的左边缘和给定ID的控件的右边缘对齐,默认位于父布局的顶部 |
layout_toEndOf | 视情况同Left或Right |
layout_alignParentTop | 当前控件上端与父控件的上端对齐(重合),默认左上 |
layout_alignParentBottom | 当前控件低端与父控件的低端对齐(重合),默认左下 |
layout_alignParentLeft | 当前控件左端与父控件的左端对齐(重合),默认左上 |
layout_alignParentRight | 当前控件右端与父控件的右端对齐(重合),默认右上 |
layout_alignLeft | 使当前控件与给出id控件的左边重合,默认位于父布局的上边 |
layout_alignStart | 视情况同Left或Right |
layout_alignRight | 使当前控件与给出id控件的右边重合,默认位于父布局的上边 |
layout_alignEnd | 视情况同Left或Right |
layout_alignTop | 使当前控件与给出id控件的顶部重合,默认位于父布局的左边 |
layout_alignBottom | 使当前控件与给出id控件的底部重合,默认位于父布局的左边 |
layout_alignBaseline | 该控件的baseline和给定ID的控件的baseline对齐,主要用于Label或者其他包含文本的widgets。 |
layout_centerHorizontal | 当前控件位于父控件的横向中间位置(水平方向的中央),默认父布局的上方 |
layout_centerInParent | 当前控件位于父控件的纵横向中间位置(水平方向和垂直方向的中央) |
layout_centerVertical | 当前控件位于父控件的纵向中间位置(垂直方向的中央),默认父布局的左边 |
(4)gravity
用于设置组件对齐方式。有两种不同属性:android:gravity与android:layout_gravity。前者用于设置当前组件的子组件在组件中的位置,也可以说是指定文字在控件中的对齐方式;后者用于设置自身在父组件中的位置,也可以说是指定控件在布局中的对齐方式。
可以说名称不以layout_开头的属性作用于组件本身,组件生成时,会调用某个方法按照属性及属性值进行自我配置;而名称以layout_开头的属性作用于组件的父组件,称这些属性为布局参数,它们会告知父布局如何在内部安排自己的子元素。
包含如下属性: