Android应用界面组件(上)

一、视图组件与容器组件
Android绝大多数组件都放在android.widget包及其子包、android.view包及其子包。
android所有的ui组件都继承了View类。
View类支持的XML属性:
android.alpha;
android.id;
android.background
android.onClick;
android.scrollbars;
android.scrollbarSize;
android.scrollbarStyle;
ViewGroup类的布局依靠ViewGroup.LayoutParams和ViewGroup.MarginLayoutParams两个内部类。

ViewGroup.LayoutParams(控制组件大小)支持两个XML属性;
Android.layout_height;
android.layout_width;
两个属性支持如下三个属性值:
fill_parent
match_parent
wrap_content


ViewGroup.MarginLayoutParams(控制组件的周围的页边距)支持四个XML属性
android.layout_marginBottom
android.layout_marginLeft
android.layout_marginRight
android.layout_marginTop


Context本身是一个抽象类。Activity和Service都继承了Context
用java代码绘制界面时,每个组件都需要一个Context参数。
二、用户自定义开发View
1.重写构造器
2.重写一些重要的方法


三、ViewGroup(布局管理器)的继承关系


ViewGroup继承于View
AbsoluteLayout、FrameLayout、LinearLayout、RelativeLayout、GridLayout继承于ViewGroup
TableLayout继承于LinearLayout



(一)线性布局
控制组件一个挨着一个的排列起来。但是不会自动换行。可以横向,也可以纵向。通过android:orientation属性控制
LinearLayout常用的XML属性
Android:gravity   可以设置布局管理器内组件的对其方式。可以同时指定多种对齐方式。
Android:orientation  指定布局管理器内组件的排列方式,可以是horizontal,vertical。


                LinearLayout.LayoutParams控制,故其子元素可以指定额外的属性
Android:layout_gravity   指定该元素在LinearLayout内的对齐方式
android:layout_weight    指定该元素在LinearLayout中所占的权重

(二)表格布局
采用行和列来管理UI组件。不需要明确的申明具有多少行和多少列。只需要通过添加TabelRow、其它组件来控制表格的行数和列数。TableRow就是一个表格行,而其又是一个容器。故又可以往其中添加组件。
单元格的三种行为方式
android:collapseColumns    设置需要被隐藏的列的列号
android:shrinkColumns       设置允许被收缩的列的列号
android:stretchColumns     设置允许被拉伸的列的列号


(三)帧布局
通过gravity设置对其方式,类似于GardLayout。区别是其并未提供相应的方法将其下方的卡片移上来。


(四)相对布局
如果组件A的位置由B决定,则必须先定义B的位置。
此类布局通常通过设置与布局容器和组件之间的位置关系来确定位置
常用的XML属性
android:gravity;
android:ignoreGravity     设置那个组件不受gravity属性影响。
子元素的XML属性(true|false)
android:layout_centerInParent控制子组件是否位于布局容器中央。
android:layout_centerVertical控制子组件是否位于布局容器的垂直居中。
android:layout_alignParentRight控制子组件是否与布局容器右对齐。
子元素的XML属性(id)
android:layout_toRightOf控制子元素位于给出ID组件的右侧
android:layout_toLeftOf控制子元素位于给出ID组件的左侧
android:layout_above控制该组件位于给出ID组件的上方
android:layout_below控制该组件位于给出ID组件的下方
android:layout_alignTop控制该组件与给出ID组件上边界对齐
android:layout_alignBottom控制该组件与给出ID组件下边界对齐
android:layout_alignLeft控制该组件与给出ID组件左边界对齐
android:layout_alignRight控制该组件与给出ID组件右边界对齐


(五)网格布局
类似于HTML的table标签
提供了android:rowCount和android:columnCount方法控制其行数和列数
子元素的XML属性
android:layout_column设置该子组件位于第几列
android:layout_row设置该子组件位于第几行
android:layout_rowSpan设置该子组件跨几行
android:layout_columnSpan设置该子组件跨几列
android:layout_gravity设置该子组件以何种方式占据网格空间


(六)绝对布局
类似于AWT里面的空布局
子元素的XML属性
android:layout_x
android:layout_y
android:width
android:height

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值