Android之布局UI

<!--Android查看API
android 安装目录-->sdk目录-->docs子目录-->打开index.html(浏览器可设置脱机模式:个人使用火狐)-->
Develop-->API Guides(因版本更新,可能略有不同,仔细找找)
-->
>视图组件与容器组件:
Android大部分UI组件都放在android.widget包及其子包、android.view包及其子包中
Android所有UI组件都继承了View类,View组件代表了一个空白矩形区域
View类的一个重要子类:
ViewGroup: viewGroup常作为其他组件的容器使用
Android所有UI组件都建立在View和ViewGroup组件之上,Android采用"组合器"设计模式来设计View和ViewGroup,
ViewGroup也可当做View使用,ViewGroup可以嵌套View和ViewGroup;
>Android 控制界面的三种方式:XML布局文件、JAVA代码控制、XML和JAVA代码混合控制
>自定义View
>UI布局:
1)布局管理器:以ViewGroup为基类
布局管理器继承了ViewGroup(同时也继承了View),其本身就是一个UI组件,布局管理器之间可以相互嵌套,所有布局
都可以作为容器类使用,所以可调用多个重载的addView()向布局管理器中添加组件;使用布局管理器可以根据运行平
台来调整组件的大小,通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性
Android六大布局(多为五大布局)<很多布局管理器都提供LayoutParams内部类,控制子元素支持指定android:layout_gravity属性>
a>LinearLayout 线性布局,可以控制各组件横向或纵向排列(android:orientation="Horizontal或Vertical"),但不会换行,当组件连续排列到头之 后,剩下的组件不会被显示出来.
b>TableLayout 表格布局,继承于LinearLayout本质仍然是线性布局管理器,采用行列的形式管理UI组件.通过添加TableRow或其他UI组件控制 行数和列数.
TableRow也是容器,在TableLayout中添加一个TableRow,这个TableRow就占一行,然后在TableRow中每次添加其他组件就占 一列.如果直接向TableLayout中添加其他组件,则这个组件就占一行.TableLayout中,列宽由该列中最宽的单元格决定,整个布局 的宽度则取决于父容器的宽度.
可添加的属性:
android:collapseColumns   setColumnCollapsed(int,boolean) 设置被隐藏列的列序号,多个之间用逗号隔开
android:shrinkColumns     setShrinkAllColumns(boolean)    设置被收缩的列的列序号,多个之间用逗号隔开
android:stretchColumns    setStretchAllColumns(boolean)   设置被拉伸的列的列序号,多个之间用逗号隔开
c>FrameLayout 帧布局,继承于ViewGroup,添加的每个子组件都占据一帧,都会根据gravity属性自动对齐,而且每个组件都是叠加在一起的.
属性:
    android:foreground  setForeground(Drawable)  设置该帧布局容器的前景图像
android:foregroundGravity setForegroundGravity(int) 定义绘制前景图像的gravity属性
例子:可做霓虹灯效果
d>RelativeLayout 相对布局,其内部的组件位置可设置为相对于父容器或者兄弟组件.
RelativeLayout.LayoutParams可设置子组件的布局分布,而且继承于android.view.ViewGroup.MarginLayoutParams;
属性:
android:gravity     setGravity(int)    设置该布局容器内各子组件的对齐方式
android:ignoreGravity  setIgnoreGravity(int)  设置哪个组件不受gravity属性的影响
相对于父控件:值=true/false
android:layout_centerInparent 设置子组件位于父容器的中央
android:layout_centerHorizontal 设置子组件位于父容器的水平居中
android:layout_centerVertical 设置子组件位于父容器的垂直居中

android:layout_alignParentTop 设置子组件是否与父容器顶端对齐
android:layout_alignParentBootom 设置子组件是否与父容器底端对齐
android:layout_alignParentLeft 设置子组件是否与父容器左边对齐
android:layout_alignParentRight 设置子组件是否与父容器右边对齐
相对于兄弟控件:值=@+id/ID
android:layout_above 设置子组件位于兄弟组件的上方
android:layout_below 设置子组件位于兄弟组件的下方
android:layout_toLeftOf 设置子组件位于兄弟组件的左侧
android:layout_toRightOf 设置子组件位于兄弟组件的右侧

android:layout_alignTop 设置子组件与兄弟组件的上边界对齐
android:layout_alignBottom 设置子组件与兄弟组件的下边界对齐
android:layout_alignLeft 设置子组件与兄弟组件的左边界对齐
android:layout_alignRight 设置子组件与兄弟组件的右边界对齐
e>GridLayout 网格布局,Android4.0新增,网格布局将容器划分rows、columns个网格,每个网格可放置一个组件,而且可以设置跨列跨行.
代码设置:setRowCount(int) setColumnCount(int)
XML属性设置:
android:alignmentMode  setAlignmentMode(int)  设置布局管理器的对齐模式
android:columnCount setColumnCount(int)  设置网格列的数量
android:columnOrderPreserved setColumnOrderPreserved(boolean) 设置网格容器是否保留列序号
android:rowCount setRowCount(int)  设置网格行的数量
android:rowOrderPreserved setRowOrderPreserved(boolean)   设置网格容器是否保留行序号
android:useDefaultMargins setUseDefaultMargins(boolean)   设置布局管理器是否使用默认的页边距
内部类:GridLayout.LayoutParams
android:layout_column 设置子组件在GridLayout的第几列
android:layout_columnSpan 设置子组件在GridLayout横向上跨几列
android:layout_row 设置子组件在GridLayout的第几行
android:layout_rowSpan 设置子组件在GridLayout纵向上跨几行
android:layout_gravity  setGravity(int)      设置子组件占据网格空间的方式
f>AbsoluteLayout 绝对布局,布局容器不再管理子组件的位置、大小,需自己控制,<已过时>
android:layout_x 指定子组件的x坐标
android:layout_y 指定子组件的y坐标






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值