布局的介绍: 1、在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子类。(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。 2、在2.2操作系统中将AbsoluteLayout过期。而目前TableLayout也逐渐少用。 3、在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器界面) 总之,Android中一共有六种布局。目前推荐使用RelativeLayout、LinearLayout、GridLayout三种布局。 LinearLayout: (一)、概念:线性布局控制其中的控件或组件横向或纵向排列。不线性布局布局中,每一行或每一列只能放一个控件。并且线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。 线性布局的默认方向是水平方向(Horizontal)。vertical (二)、LinearLayout的常用属性: 1.android:orientation 定义布局内控件或组件的排列方式 可选项:vertical 、 horizontal 2.android:layout_width 定义控件的宽度 可选项:fill_parent / match_parent/ wrap_content/绝对数值 备注:fill_parent / match_parent的效果完全一致,都是填充整个父控件。但是自2.2版本开始推荐使用match_parent 。wrap_content指的是该控件的宽度正好包裹内容物。 3.android:layout_height 定义控件的高度 可选项:fill_parent / match_parent/ wrap_content/绝对数值 备注:fill_parent / match_parent的效果完全一致,都是高度填充整个父控件。wrap_content指的是该控件的高度正好包裹内容物。 4.android:id 设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。 设置id的格式为:android:id = "@+id/id的名字" 5.android:background 设置控件的背景颜色或背景图片 例如:android:background="#ffffff" android:background="@drawable/图片名称" 【备注:】 颜色有RGB颜色格式和ARGB格式。RGB是红绿蓝三原色。而ARGB是带alpha的三原色,即有透明度的三原色。 #FFFFFF 代表白色 #000000 黑色 #FFFFFFFF 完全不透明 #00FFFFFF 完全透明 #88FFFFFF 半透明 6.android:layout_weight 设置控件的权重。即各控件在水平或者垂直方向上平均分配。 备注:如果是水平方向设置权重,要将android:layout_width设置为0dp,如果是垂直方向上使用权重,要将android:layout_height设置为0dp。否则权重容易受到高度或宽度的干扰而出现偏差。 7.android:gravity 该属性用来控制该View的内容物的位置。 如果该属性是定义在布局节点中,则该布局中所有控件的位置都受到这个属性的控制。 如果该属性出现在Button、TextView、EditText等控件中,则用来控制这些控件上的文字的位置。 可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。 【备注:】本属性与android:layout_gravity不同。 8.android:layout_gravity 该属性用于设置控件相对于容器的对齐方式。 可选项有:top、bottom、left、right、center_vertical、center_horizontal 、fill_vertical 、 center、fill等等。 这些可选项中不是适用于每一种布局。在垂直线性布局中,android:gravity为bottom不起作用;而水平线性布局中,android:gravity为right不起作用。 【备注:】而本属性是android:layout_gravity属性,与 android:gravity 属性不同。 (三)、LinearLayout的特有属性:【重新归纳:去除公共属性后的特有属性】 1、android:orientation 布局管理器内组件的排列方式 2、android:gravity 设置布局管理器内组件的对齐方式 (四)、 LinearLayout 子元素的特有属性: 1、android:layout_weight 子元素在 LinearLayout 中所占的权重 2、android:layout_gravity 子元素在 LinearLayout 中的对齐方式 RelativeLayout: (一)、概念:指按着控件之间的相对位置来进行布局。 (二)、RelativeLayout特有属性: 1、android:gravity 设置布局容器内子控件的对齐方式 2、android:ignoreGravity 设置布局管理器内哪个控件不受gravity属性的影响 (三)、RelativeLayout子元素的特有属性:LayoutParams A、第一组:指兄弟控件之间的相对位置。该组属性的值是另一个控件的id。 layout_toRightOf 该控件在哪个控件的右侧 layout_toLeftOf 该控件在哪个控件的左侧 layout_above 该控件在哪个控件的上侧 layout_below 该控件在哪个控件的下侧 B、第二组:指兄弟控件之间的对齐关系。该组属性的值是另一个控件的id。 layout_alignRight 该控件与哪个控件的右对齐 layout_alignLeft 该控件与哪个控件的左对齐 layout_alignTop 该控件与哪个控件的顶对齐 layout_alignBottom 该控件与哪个控件的底对齐 C、第三组:指控件与父布局之间的对齐关系。该组属性的值是true或者false。 layout_alignParentRight 该控件与父布局控件的右对齐吗? layout_alignParentLeft 该控件与父布局控件的左对齐吗? layout_alignParentTop 该控件与父布局控件的顶端对齐吗? layout_alignParentBottom 该控件与父布局控件的底部对齐吗? layout_centerInParent 该控件位于父布局控件的中心位置吗? layout_centerVertical 该控件位于父布局控件的垂直中心位置吗? layout_centerHorizontal 该控件位于父布局控件的水平中心位置吗? GridLayout:网格布局 (一)、GridLayout布局属性: 1、android:alignmentMode 属性说明:设置布局的对齐模式。可以取以下值: alignBounds -- 对齐子视图边界。 alignMargins -- 对齐子视图边距。 2、android:columnCount 属性说明:GridLayout的最大列数 3、android:rowCount 属性说明:GridLayout的最大行数 4、android:orientation 属性说明:GridLayout中子元素的布局方向。有以下取值: horizontal -- 水平布局。 vertical -- 竖直布局。 5、android:columnOrderPreserved 属性说明: 设置该网格布局是否保留列序号。默认是true。 6、android:rowOrderPreserved 属性说明: 设置该网格布局是否保留行序号。默认是true。 7、android:useDefaultMargins 属性说明: 设置GridLayout使用默认的边距。默认值是false。 (二)、GridLayout子元素的属性: 1、android:layout_column 属性说明: 显示该控件的列。例如,android:layout_column="0",表示在第1列显示该控件;android:layout_column="1",表示在第2列显示该控件。 2、android:layout_row 属性说明: 该控件所在行。例如,android:layout_row="0",表示在第1行显示该控件;android:layout_row="1",表示在第2行显示该控件。它和 android:layout_column类似。 3、android:layout_columnSpan 属性说明: 列合并。即该控件所占的列数。例如,android:layout_columnSpan="2",表示该控件占2列。 4、android:layout_rowSpan 属性说明: 行合并。即该控件所占的行数。例如,android:layout_rowSpan="2",表示该控件占2行。 5、android:layout_gravity 属性说明:该控件的布局方式。选项值: top -- 控件置于容器顶部,不改变控件的大小。 bottom -- 控件置于容器底部,不改变控件的大小。 left -- 控件置于容器左边,不改变控件的大小。 right -- 控件置于容器右边,不改变控件的大小。 center_vertical -- 控件置于容器竖直方向中间,不改变控件的大小。 fill_vertical -- 如果需要,则往竖直方向延伸该控件。 center_horizontal -- 控件置于容器水平方向中间,不改变控件的大小。 fill_horizontal -- 如果需要,则往水平方向延伸该控件。 center -- 控件置于容器中间,不改变控件的大小。 fill -- 如果需要,则往水平、竖直方向延伸该控件。 clip_vertical -- 垂直剪切,剪切的方向基于该控件的top/bottom布局属性。若该控件的gravity是竖直的:若它的gravity是top的话,则剪切该控件的底部;若该控件的gravity是bottom的,则剪切该控件的顶部。 clip_horizontal -- 水平剪切,剪切的方向基于该控件的left/right布局属性。若该控件的gravity是水平的:若它的gravity是left的话,则剪切该控件的右边;若该控件的gravity是 right的,则剪切该控件的左边。 start -- 控件置于容器的起始处,不改变控件的大小。 end -- 控件置于容器的结束处,不改变控件的大小。
android:layout
猜你喜欢
转载自ch-kexin.iteye.com/blog/2281052
今日推荐
周排行