【Android学习笔记4】用户界面(一):布局设计


Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。


1、LinerLayout(线性布局)
直,横,竖,嵌套(默认)

android:layout_gravity

本元素相对于父元素的重力方向

android:layout_gravity= "center|right|left"

android:gravity

本元素所有子元素的重力方向

android:gravity="center_horizontal" 

android:orientation

线性布局以列或行来显示内部子元素

Android:orientation=”horizontal|vertical”

android:layout_weight

线性布局内子元素对未占用空间【水平或垂直】分配权重值,其值越小,权重越大

Android:layout_weight=”1”

android:id

为控件指定相应的ID

android:text

指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符

android:textSize

指定控件当中字体的大小 sp

android:background

指定该控件所使用的背景色,RGB命名法

android:layout_width

指定控件的宽度 dp

android:layout_height

指定控件的高度  dp

android:padding*

指定控件的内边距,也就是说控件当中的内容

android:sigleLine

如果设置为真的话,则将控件的内容在同一行当中进行显示  






2、RelativeLayout(相对布局)
相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。
  • 第一类:属性值为truefalse
android:layout_centerHrizontal  水平居中
android:layout_centerVertical   垂直居中
android:layout_centerInparent    相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft   贴紧父元素的左边缘
android:layout_alignParentRight  贴紧父元素的右边缘
android:layout_alignParentTop    贴紧父元素的上边缘
android:layout_alignWithParentIfMissing  如果对应的兄弟元素找不到的话就以父元素做参照物

android:layout_below      在某元素的下方
android:layout_above      在某元素的的上方
android:layout_toLeftOf   在某元素的左边
android:layout_toRightOf  在某元素的右边
android:layout_alignTop   本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft  本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight  本元素的右边缘和某元素的的右边缘对齐

  • 第三类:属性值为具体的像素值,如30dip40px
android:layout_marginBottom       离某元素底边缘的距离
android:layout_marginLeft         离某元素左边缘的距离
android:layout_marginRight        离某元素右边缘的距离
android:layout_marginTop          离某元素上边缘的距离
EditTextandroid:hint  设置EditText为空时输入框内的提示信息。


android:gravity 
android:gravity属性是对该view 内容的限定.比如一个button 上面的text.  你可以设置该text view的靠左,靠右等位置.以button为例,android:gravity="right"button上面的文字靠右

android:layout_gravity
android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为例,android:layout_gravity="right"button靠右

android:scaleType
android:scaleType是控制图片如何resized/moved来匹对ImageViewsizeImageView.ScaleType / android:scaleType值的意义区别:
CENTER /center  按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
CENTER_CROP / centerCrop  按比例扩大图片的size居中显示,使得图片长()等于或大于View的长()
CENTER_INSIDE / centerInside  将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/
FIT_CENTER / fitCenter  把图片按比例扩大/缩小到View的宽度,居中显示
FIT_END / fitEnd   把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
FIT_START / fitStart  把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY / fitXY  把图片不按比例扩大/缩小到View的大小显示
MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。


3、AbsoluteLayout(绝对布局)

所谓绝对布局,就是说布局内所有元素位置都是固定的,通过指定控件坐标来定义坐标的位置。因为Android设备多样,分辨率不统一,用绝对布局往往在不同的机型上会有很差的效果,所以,不推荐用绝对布局来布局UI。


4、FrameLayout(单帧布局)
 FrameLayout是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。



5、TableLayout(表格布局)

简介:Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。

a、当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。

b、当为View时,该View将独占一行。

TableLayout行列数的确定:

TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或View控件),就有多少行。

TableLayout的列数等于含有最多子控件的TableRow的列数。如第一TableRow含2个子控件,第二个TableRow含3个,第三个TableRow含4个,那么该TableLayout的列数为4.

TableLayout可设置的属性包括全局属性及单元格属性。

1、全局属性也即列属性,有以下3个参数:

android:stretchColumns    设置可伸展的列。该列可以向行方向伸展,最多可占据一整行。

android:shrinkColumns     设置可收缩的列。当该列子控件的内容太多,已经挤满所在行,那么该子控件的内容将往列方向显示。

android:collapseColumns 设置要隐藏的列。


示例:

android:stretchColumns="0"           第0列可伸展

android:shrinkColumns="1,2"         第1,2列皆可收缩

android:collapseColumns="*"         隐藏所有行


2、单元格属性,有以下2个参数:

android:layout_column       指定该单元格在第几列显示

android:layout_span        指定该单元格占据的列数(未指定时,为1)

示例:
android:layout_column="1"       该控件显示在第1列
android:layout_span="2"               该控件占据2列

说明:一个控件也可以同时具备这两个特性。

<?xml version="1.0" encoding="utf-8"?> 
002 <ScrollViewxmlns:android="http://schemas.android.com/apk/res/android" 
003     android:layout_width="fill_parent" 
004     android:layout_height="wrap_content" 
005     android:scrollbars="none" 
006    
007     <LinearLayout 
008         android:id="@+id/dictLayout" 
009         android:layout_width="fill_parent" 
010         android:layout_height="fill_parent" 
011         android:orientation="vertical" 
012         android:scrollbars="" 
013    
014         <TextView 
015             android:id="@+id/title" 
016             android:layout_width="fill_parent" 
017             android:layout_height="wrap_content" 
018             android:text="业务字典管理" /> 
019    
020         <LinearLayout 
021             android:layout_width="fill_parent" 
022             android:layout_height="wrap_content" 
023             android:orientation="horizontal" 
024    
025             <TextView 
026                 android:layout_width="80dp" 
027                 android:layout_height="wrap_content" 
028                 android:text="名称:" /> 
029    
030             <EditText 
031                 android:id="@+id/name" 
032                 android:layout_width="200dp" 
033                 android:layout_height="wrap_content" 
034                 android:hint="请输入业务字典名称" 
035                 android:maxLength="20" 
036                 android:singleLine="true" /> 
037         </LinearLayout
038    
039         <TableLayout 
040             android:id="@+id/dictTable" 
041             android:layout_width="fill_parent" 
042             android:layout_height="wrap_content" 
043             android:stretchColumns="1" 
044    
045             <TableRow 
046    
047                 <TextView 
048                     android:layout_width="60dp" 
049                     android:layout_gravity="left" 
050                     android:padding="3dip" 
051                     android:text="序号" 
052                     android:textStyle="bold" /> 
053    
054                 <TextView 
055                     android:layout_gravity="center" 
056                     android:padding="3dip" 
057                     android:text="字典名称" 
058                     android:textStyle="bold" /> 
059    
060                 <TextView 
061                     android:layout_gravity="right" 
062                     android:padding="3dip" 
063                     android:text=" 操作 " 
064                     android:textStyle="bold" /> 
065             </TableRow
066         </TableLayout
067    
068         <LinearLayout 
069             android:layout_width="fill_parent" 
070             android:layout_height="wrap_content" 
071             android:gravity="right" 
072             android:orientation="horizontal" 
073    
074             <Button 
075                 android:id="@+id/btnCancel" 
076                 android:layout_width="wrap_content" 
077                 android:layout_height="wrap_content" 
078                 android:layout_margin="8dp" 
079                 android:text=" 关 闭 " /> 
080    
081             <Button 
082                 android:id="@+id/btnReset" 
083                 android:layout_width="wrap_content" 
084                 android:layout_height="wrap_content" 
085                 android:layout_margin="8dp" 
086                 android:text=" 重 置 " /> 
087    
088             <Button 
089                 android:id="@+id/btnAdd" 
090                 android:layout_width="wrap_content" 
091                 android:layout_height="wrap_content" 
092                 android:layout_margin="8dp" 
093                 android:text=" 添 加 " /> 
094    
095             <Button 
096                 android:id="@+id/btnOK" 
097                 android:layout_width="wrap_content" 
098                 android:layout_height="wrap_content" 
099                 android:layout_margin="8dp" 
100                 android:text=" 保 存 " /> 
101         </LinearLayout
102     </LinearLayout
103    
104 </ScrollView>

Android使用TableLayou动态布局实例




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值