简述Android六⼤布局样式
⾸先来看⼀下Android布局管理器的类图:
从图中可以看出布局管理器是继承了View,所以可以作为普通UI组件使⽤。所有布局都可以作为容器类使⽤,调⽤多个重载的addView()向布局管理器中添加组件。
从上⾯的图中我们可以看出这五⼤布局样式分别是:
1.线性布局:LinearLayout
2.表格布局:TableLayout
3.帧布局:FrameLayout
4.相对布局:RelativeLayout
5.绝对布局:AbsoluteLayout
6.GridLayout
1、线性布局(LinearLayout):
线性布局就是将容器⾥的组件⼀个挨⼀个地排列起来。LinearLayout通过设置android:orientation属性来控制各组件的排列⽅式(⽔平排列,垂直排列)。线性布局不会换⾏:当组件⼀个挨着⼀个排列到末尾后,剩下的组件将不会被显⽰出来。
常⽤属性:
android:gravity 设置布局管理器内组件的对齐⽅式。(多个属性值之间⽤竖线隔开,竖线前后千万不
能出现空格)
android:orientation 设置布局管理器内组件的排列⽅式。
2、表格布局(TableLayout)
表格布局采⽤⾏、列的形式来管理UI组件,TableLayout并不需要明确地声明包含多少⾏、多少列,⽽是通过添加TableRow、其他组件来控制表格的⾏数和列数。(TableRow就是⼀个表格⾏,也是容器)。
表格的宽度由该列中最宽的那个单元格决定,整个表格布局的宽度则取决于福容器的宽度。
单元格设置的三种⾏为⽅式:
1.Shrinkable:如果某个列被设定为Shrinkable,那么该列的所有单元格的宽度可以被收缩,以保证该表格能适应⽗容器的宽度。(android:shrinkColumns)
2.Stretchable:如果某个列被设为Stretchable,那么该列的所有单元格的宽度可以被拉伸,以保证组件能完全填满表格空余空间。(android:stretchColumns)
3.Collapsed:如果某个列被设为Stretchable,那么该列的所有单元格会被隐藏。(android:collapseColumns)
3、帧布局(FrameLayout)
帧布局直接继承了VIewGroup,它为每个加⼊其中的组件创建⼀个空⽩的区域(称为⼀帧),所有每个⼦组件占据⼀帧,这些帧都会根据gravity属性执⾏⾃动对齐。
属性:
android:foreground 设置该帧布局容器的前景图像。
android:foregroundGravity 定义绘制前景图像的gravity属性。
4、相对布局(RelativeLayout)
相对布局容器内⼦组件的位置总是相对兄弟组件、⽗容器来决定的。
RelativeLayout属性:
android:gravity 设置该布局容器内部各个组件的对齐⽅式
android:ignoreGravity 设置哪个组件不受gravity组件的影响
RelativeLayout提供了⼀个内部类**RelativeLayout.LayoutParams来控制该布局容器中各个组件的布局分布。该类只能设为true、false 的XML属性有:
的XML属性有:
android:layout_centerHorizontal 控制该⼦组件是否位于布局容器的⽔平居中位置。
android:layout_centerVertical 控制该⼦组件是否位于布局容器的垂直居中位置
简述android概述android:layout_centerInParent 控制该⼦组件是否位于布局容器的中央位置
android:layout_alignParentLeft 控制该⼦组件是否与布局容器左边对齐·
android:layout_alignParentBottom 控制该⼦组件是否与布局容器左边对齐
android:layout_alignParentRight 控制该⼦组件是否与布局容器右边对齐
android:layout_alignParentTop 控制该⼦组件是否与布局容器顶端对齐
RelativeLayout.LayoutParams⾥只能设为其他UI组件ID的属性
android:layout_toRightOf 控制该⼦组件位于给出ID组件的右侧
android:layout_toLeftOf 控制该⼦组件位于给出ID组件的左侧
android:layout_above 控制该⼦组件位于给出ID组件的上⽅
android:layout_below 控制该⼦组件位于给出ID组件的下⽅
android:layout_alignTop 控制该⼦组件位于给出ID组件的上边界对齐
android:layout_alignBottom
android:layout_alignLeft
android:layout_alignRight
绝对布局(AbsoluteLayout)
使⽤AbsoluteLayout作为布局管理器时,布局容器不在管理⼦组件的位置、⼤⼩。
layout_x:指定该⼦组件的X坐标。
layout_y:指定该⼦组件的Y坐标。
注:在开发Android应⽤时不建议使⽤决定布局,会难兼顾不同屏幕⼤⼩、分辨率的问题。
GridLayout布局(Android4.0以后引⼊)
GridLayout布局使⽤虚细线将布局划分为⾏、列和单元格,也⽀持⼀个控件在⾏、列上都有交错排列。
⽽GridLayout使⽤的其实是跟LinearLayout类似的API,只不过是修改了⼀下相关的标签⽽已,所以对于开发者来说,掌握GridLayout还是很容易的事情。
GridLayout的布局策略简单分为以下三个部分:
⾸先它与LinearLayout布局⼀样,也分为⽔平和垂直两种⽅式,默认是⽔平布局,⼀个控件挨着⼀个控件从左到右依次排列,
但是通过指定android:columnCount设置列数的属性后,控件会⾃动换⾏进⾏排列。
另⼀⽅⾯,对于GridLayout布局中的⼦控件,默认按照wrap_content的⽅式设置其显⽰,这只需要在GridLayout布局中显式声明即可。
其次,若要指定某控件显⽰在固定的⾏或列,只需设置该⼦控件的android:layout_row和android:layout_column属性即可,
但是需要注意:android:layout_row=”0”表⽰从第⼀⾏开始,android:layout_column=”0”表⽰从第⼀列开始,如果需要设置某控件跨越多⾏或多列,只需将该⼦控件的android:layout_rowSpan或者layout_columnSpan属性设置为数值,
再设置其layout_gravity属性为fill即可,前⼀个设置表明该控件跨越的⾏数或列数,后⼀个设置表明该控件填满所跨越的整⾏或整列。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论