Android学习——五种布局方式
来源:互联网 发布:穆雅斓的淘宝店假货 编辑:程序博客网 时间:2024/05/16 14:46
android中常见布局:
- RelativeLayout相对布局
- AbsoluteLayout绝对布局
- LinearLayout线性布局
- TableLayout表格布局
- FrameLayout帧布局
注意:布局尽可能不要嵌套太深,嵌套越深越慢
1. RelativeLayout相对布局
RelativeLayout按照各子元素之间的位置关系完成布局。注意在指定位置关系时,引用的ID必须在引用之前,先被定义,否则将出现异常。
RelativeLayout是Android五大布局结构中最灵活的一种布局结构,比较适合一些复杂界面的布局。推荐开发时使用相对布局。
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Type here:"/> <EditText android:id="@+id/entry" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/editbox_background" android:layout_below="@id/label"/> <Button android:id="@+id/ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/entry" android:layout_alignParentRight="true" android:layout_marginLeft="10dip" android:text="OK" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/ok" android:layout_alignTop="@id/ok" android:text="Cancel" /> <Button android:id="@+id/b1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="xxxx" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_above="@id/b1" android:layout_toRightOf="@id/b1" android:layout_marginBottom="20dp" android:layout_marginLeft="20dp" android:text="xxxxxx" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="xxxxxx" /></RelativeLayout>
运行效果:
2. AbsoluteLayout绝对布局
android:layout_x和android:layout_y属性用于描述该子元素的坐标位置。
在此布局中的子元素可以相互重叠。在实际开发中,通常不采用此布局格式,因为它的界面代码过于刚性,以至于有可能不能很好的适配各种终端。该类已经过期,不推荐使用了。
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="20dp" android:layout_y="10dp" android:background="#AAFFFF" android:text="绝对布局" /> <Button android:id="@+id/btn" android:layout_x="20dp" android:layout_y="60dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button" /></AbsoluteLayout>
运行效果:
3. LinearLayout线性布局
这种布局比较常用,有水平线性布局(一个元素占一列)和垂直线性布局(一个元素占一行)。
LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。LinearLayout中的子元素属性android:layout_weight生效,它用于描述该子元素在剩余空间中占有的大小比例。加入一行只有一个文本框,那么它的默认值就为0,如果一行中有两个等长的文本框,那么他们的android:layout_weight值可以是同为1。如果一行中有两个不等长的文本框,那么他们的android:layout_weight值分别为1和2,那么第一个文本框将占据剩余空间的三分之二,第二个文本框将占据剩余空间中的三分之一。android:layout_weight遵循数值越小,重要度越高的原则。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" ><LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <EditText android:id="@+id/et_result" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#E8F2FE" android:editable="false" android:enabled="false" android:gravity="right|top" android:lines="6" android:text="" android:textColor="#0000ff" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:padding="0dp" > <Button android:id="@+id/btn_ce" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="5dp" android:layout_weight="1" android:text="CE" /> <Button android:id="@+id/btn_back" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="5dp" android:layout_weight="3" android:text="BACK" /></LinearLayout></LinearLayout>
运行效果:
4. TableLayout表格布局
适用于N行N列的布局格式。一个TableLayout由许多TableRow组成,一个TableRow代表一行。
TableRow是LinearLayout的子类,TablelLayout并不需要明确地声明包含多少行、多少列,有几个TableRow就有几行,TableRow中有几个组件就有几列, TableRow也是容器,因此可以向TableRow里面添加其他组件,每添加一个组件该表格就增加一列。在表格布局中,列的宽度由该列中最宽的单元格决定,整个表格布局的宽度取决于父容器的宽度(默认是占满父容器本身)。
常用属性:
android:stretchColumns=“0,2” 拉伸第0列和第2列
android:shrinkColumns=“1” 收缩第1列
android:layout_column=“1” 组件位于第1列
android:layout_span=“2” 组件占据2列
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="0,1"> <!-- 允许被拉伸第0列、第1列,默认从第0列开始 --> <TableRow> <TextView android:layout_column="1" android:text="Open..." android:padding="3dp" /> <TextView android:text="Ctrl-O" android:gravity="right" android:padding="3dp" /> </TableRow> <TableRow> <TextView android:layout_column="1" android:text="Save As..." android:padding="3dp" /> <TextView android:text="Ctrl-Shift-S" android:gravity="right" android:padding="3dp" /> </TableRow> <View android:layout_height="2dp" android:background="#FF909090" /> <TableRow> <TextView android:text="X" android:padding="3dp" /> <TextView android:text="Import..." android:padding="3dp" /> </TableRow> <TableRow> <TextView android:text="xxxxx" android:padding="3dp" android:layout_span="2" android:gravity="right" android:background="#FFFF00"/> <TextView android:layout_column="2" android:text="Quit" android:gravity="right" android:padding="3dp" /> </TableRow></TableLayout>
运行效果:
5. FrameLayout帧布局
帧布局是从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排列,第一个添加的组件放到最底层,最后添加到框架中的视图显示在最上面。
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="300dp" android:layout_height="300dp" android:background="#00BFFF" android:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/> <TextView android:layout_width="200dp" android:layout_height="200dp" android:background="#FFC0CB" android:text="bbbbbbbbbbbbbbbbbbbbb"/> <TextView android:layout_width="150dp" android:layout_height="150dp" android:background="#FFFF00" android:text="ccccc"/></FrameLayout>
运行效果:
说明:从图中可以看出最上层的控件会遮盖它下面的控件。
- Android学习——五种布局方式
- android 五种布局方式
- Android五种布局方式
- Android五种布局方式
- Android五种布局方式
- Android共有五种布局方式
- 五种布局方式
- android学习之快速入门2--android五种布局方式介绍
- Android五种布局方式——LinearLayout、RelativeLayout、TableLayout....(四)
- Android五大布局方式
- Android 五大布局方式
- Android五大布局方式——相对布局(RelativeLayout)属性详解
- Android学习笔记——五大基本布局+AbsoluteLayout
- android 之---- 五种布局文件学习
- Android中常用的五种布局方式:LinearLayout
- Android中常用的五种布局方式:RelativeLayout
- Android中常用的五种布局方式:TableLayout
- Android中常用的五种布局方式:FrameLayout
- 板子挂载NFS到PC的虚拟机时的网卡共存问题
- iOS计算字符串MD5
- 以单词(而非字符)为最小单元逆置字符串;
- 计蒜客 第17题:X的平方根
- VerticalViewPager中嵌套ScrollView冲突处理
- Android学习——五种布局方式
- 分享将pdf转换成html格式的技巧
- Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优
- 如何在运行时改变App的图标
- iOS学习笔记25-到底什么是cookies?看完了绝对明白。
- 缓冲区溢出分析第04课:ShellCode的编写
- 把一个字符串循环左移n个字符
- 计蒜客 第18题:跳跃游戏
- TCP/IP网络编程 基于Linux编程_1 --套接字中标准I/O的使用