关于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边框的距离。即如下图所示:

android xml布局不显示组件 安卓xml布局属性_xml

        类似的有如下不同种类的属性:

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_开头的属性作用于组件的父组件,称这些属性为布局参数,它们会告知父布局如何在内部安排自己的子元素。

        包含如下属性:

android xml布局不显示组件 安卓xml布局属性_android studio_02