Android中常用的5大布局方式有以下几种:
  • 线性布局(LinearLayout):按照垂直或者水平方向布局的组件。
  • 帧布局(FrameLayout):组件从屏幕左上方布局组件。
  • 表格布局(TableLayout):按照行列方式布局组件。
  • 相对布局(RelativeLayout):相对其它组件的布局方式。
  • 绝对布局(AbsoluteLayout):按照绝对坐标来布局组件。
 
1. 线性布局

线性布局是Android开发中最常见的一种布局方式,它是按照垂直或者水平方向来布局,通过“android:orientation”属性可以设置线性布局的方向。属性值有垂直(vertical)和水平(horizontal)两种。

常用的属性:

android:orientation:可以设置布局的方向
android:gravity:用来控制组件的对齐方式
layout_weight:控制各个组件在布局中的相对大小

第一个实例

①效果图:

②核心代码如下:

main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <LinearLayout
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:orientation="vertical"
  11. >
  12. <EditText
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content"
  15. />
  16. </LinearLayout>
  17. <LinearLayout
  18. android:layout_width="fill_parent"
  19. android:layout_height="wrap_content"
  20. android:orientation="horizontal"
  21. android:gravity="right"
  22. >
  23. <!-- android:gravity="right"表示Button组件向右对齐 -->
  24. <Button
  25. android:layout_height="wrap_content"
  26. android:layout_width="wrap_content"
  27. android:text="确定"
  28. />
  29. <Button
  30. android:layout_height="wrap_content"
  31. android:layout_width="wrap_content"
  32. android:text="取消"
  33. />
  34. </LinearLayout>
  35. </LinearLayout>

第二个实例

①效果图:

②核心代码:

mian.xml
 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical" android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <LinearLayout
  6. android:orientation="horizontal"
  7. android:layout_width="fill_parent"
  8. android:layout_height="fill_parent"
  9. android:layout_weight="1">
  10. <TextView
  11. android:text="red"
  12. android:gravity="center_horizontal"
  13. android:background="#aa0000"
  14. android:layout_width="wrap_content"
  15. android:layout_height="fill_parent"
  16. android:layout_weight="1"
  17. />
  18. <!--android:gravity="center_horizontal"水平居中 -->
  19. <!--layout_weight属性以控制各个控件在布局中的相对大小。layout_weight属性是一个非负整数值。
  20. 线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域。
  21. 例如,在水平布局的LinearLayout中有两个Button,这两个Button的layout_weight属性值都为1,
  22. 那么这两个按钮都会被拉伸到整个屏幕宽度的一半。如果layout_weight指为0,控件会按原大小显示,不会被拉伸;
  23. 对于其余layout_weight属性值大于0的控件,系统将会减去layout_weight属性值为0的控件的宽度或者高度,
  24. 再用剩余的宽度或高度按相应的比例来分配每一个控件显示的宽度或高度-->
  25. <TextView
  26. android:text="Teal"
  27. android:gravity="center_horizontal"
  28. android:background="#008080"
  29. android:layout_width="wrap_content"
  30. android:layout_height="fill_parent"
  31. android:layout_weight="1"/>
  32. <TextView
  33. android:text="blue"
  34. android:gravity="center_horizontal"
  35. android:background="#0000aa"
  36. android:layout_width="wrap_content"
  37. android:layout_height="fill_parent"
  38. android:layout_weight="1"
  39. />
  40. <TextView
  41. android:text="orange"
  42. android:gravity="center_horizontal"
  43. android:background="#FFA500"
  44. android:layout_width="wrap_content"
  45. android:layout_height="fill_parent"
  46. android:layout_weight="1"
  47. />
  48. </LinearLayout>
  49. <LinearLayout
  50. android:orientation="vertical"
  51. android:layout_width="fill_parent"
  52. android:layout_height="fill_parent"
  53. android:layout_weight="1">
  54. <TextView
  55. android:text="row one"
  56. android:textSize="15pt"
  57. android:background="#aa0000"
  58. android:layout_width="fill_parent"
  59. android:layout_height="wrap_content"
  60. android:layout_weight="1"
  61. />
  62. <!--  -->
  63. <TextView
  64. android:text="row two"
  65. android:textSize="15pt"
  66. android:background="#DDA0DD"
  67. android:layout_width="fill_parent"
  68. android:layout_height="wrap_content"
  69. android:layout_weight="1"
  70. />
  71. <TextView
  72. android:text="row three"
  73. android:textSize="15pt"
  74. android:background="#008080"
  75. android:layout_width="fill_parent"
  76. android:layout_height="wrap_content"
  77. android:layout_weight="1"
  78. />
  79. <TextView
  80. android:text="row four"
  81. android:textSize="15pt"
  82. android:background="#FFA500"
  83. android:layout_width="fill_parent"
  84. android:layout_height="wrap_content"
  85. android:layout_weight="1"
  86. />
  87. </LinearLayout>
  88. </LinearLayout>
2. 帧布局
帧布局是从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排列,第一个添加的组件放到最底层,最后添加到框架中的视图显示在最上面。上一层的会覆盖下一层的控件。
 
 简单的例子
①效果图:
 
 
② 核心代码:
main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. >
  6. <TextView
  7. android:layout_width="300dp"
  8. android:layout_height="300dp"
  9. android:background="#00BFFF"
  10. />
  11. <TextView
  12. android:layout_width="260dp"
  13. android:layout_height="260dp"
  14. android:background="#FFC0CB"
  15. />
  16. <TextView
  17. android:layout_width="220dp"
  18. android:layout_height="220dp"
  19. android:background="#0000FF"
  20. />
  21. </FrameLayout>
 
3.表格布局
表格布局是一个ViewGroup以表格显示它的子视图(view)元素,即行和列标识一个视图的位置。
表格布局常用的属性如下:
android:collapseColumns:隐藏指定的列
android:shrinkColumns:收缩指定的列以适合屏幕,不会挤出屏幕
android:stretchColumns:尽量把指定的列填充空白部分
android:layout_column:控件放在指定的列
android:layout_span:该控件所跨越的列数
 
简单的列子:
①效果图:
 
 
② 核心代码:
 main.xml
 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. >
  6. <TableRow>
  7. <Button
  8. android:text="Button1"
  9. />
  10. <Button
  11. android:text="Button2"
  12. />
  13. <Button
  14. android:text="Button3"
  15. />
  16. </TableRow>
  17. <TableRow>
  18. <Button
  19. android:text="Button4"
  20. />
  21. <Button
  22. android:layout_span="2"
  23. android:text="Button5"
  24. />
  25. </TableRow>
  26. </TableLayout>
 
4.相对布局
相对布局是按照组件之间的相对位置来布局,比如在某个组件的左边,右边,上面和下面等。
相对布局常用属性请参考我博客的:http://liangruijun.blog.51cto.com/3061169/631816
 
简单的例子
①效果图:
 
 
② 核心代码:
main.xml
 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:padding="10px"
  6. >
  7. <TextView
  8. android:id="@+id/tev1"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:layout_marginBottom="30dp"
  12. android:text="Please Type Here:"
  13. />
  14. <EditText
  15. android:id="@+id/tx1"
  16. android:layout_width="match_parent"
  17. android:layout_height="wrap_content"
  18. android:layout_below="@id/tev1"
  19. />
  20. <Button
  21. android:id="@+id/btn1"
  22. android:layout_height="wrap_content"
  23. android:layout_width="wrap_content"
  24. android:layout_below="@id/tx1"
  25. android:layout_alignParentRight="true"
  26. android:text="确定"
  27. />
  28. <Button
  29. android:id="@+id/btn2"
  30. android:layout_height="wrap_content"
  31. android:layout_width="wrap_content"
  32. android:layout_below="@id/tx1"
  33. android:layout_toLeftOf="@id/btn1"
  34. android:layout_marginRight="30dp"
  35. android:text="取消"
  36. />
  37. </RelativeLayout>
5. 绝对布局
 绝对布局通过指定子组件的确切X,Y坐标来确定组件的位置,在Android2.0 API文档中标明该类已经过期,可以使用FrameLayout或者RelativeLayout来代替。所以这里不再详细介绍。

本文出自 “IT的点点滴滴” 博客,请务必保留此出处http://liangruijun.blog.51cto.com/3061169/632532

Android开发5大布局方式详解的更多相关文章

  1. 【转】Android开发学习笔记:5大布局方式详解

    Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...

  2. 【Android开发学习笔记之一】5大布局方式详解

    Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...

  3. Android开发之5大布局方式详解

    Android中常用的5大布局方式有以下几种: 线性布局(LinearLayout):按照垂直或者水平方向布局的组件. 帧布局(FrameLayout):组件从屏幕左上方布局组件. 表格布局(Tabl ...

  4. Android开发:文本控件详解——TextView(一)基本属性

    一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...

  5. Android开发:文本控件详解——TextView(二)文字跑马灯效果实现

    一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...

  6. Android开发数据存储之ContentProvider详解

    转载:十二.ContentProvider和Uri详解 一.使用ContentProvider(内容提供者)共享数据 ContentProvider在android中的作用是对外共享数据,也就是说你可 ...

  7. 转: Android开发中的MVP架构详解(附加链接比较不错)

    转: http://www.codeceo.com/article/android-mvp-artch.html 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解M ...

  8. Android 四种加载方式详解(standard singleTop singleTask singleInstance) .

    Android之四种加载方式 (http://marshal.easymorse.com/archives/2950 图片) 在多Activity开发中,有可能是自己应用之间的Activity跳转,或 ...

  9. Android 开发 框架系列 OkHttp使用详解

    简介 okhttp是一个第三方类库,用于android中请求网络.这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) . ...

随机推荐

  1. C#值类型以及默认值记录下

    C#的值类型有bool,byte,sbyte,decimal,double,float,int,uint,long,string等 如果我们擅长使用默认值,可以帮助我们减少带来赋值及代码编写. 比如我 ...

  2. linux c/c++ GDB教程详解(转)

    http://www.gnu.org/manual/ http://www.gnu.org/software/gdb/documentation/ http://sourceware.org/gdb/ ...

  3. C# 深复制

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  4. app图片规格

    我们定义的app图片规格 app图标需要分iphone和android两套 iphone: 名称 Iphone4 Iphone5 手机尺寸 960*640(高*宽) 1136*640 (高*宽) 电池 ...

  5. .net软件自动化测试笔记(API-1)

    .net 软件测试自动化之道 API(Application Programming Interface)包括单元测试(Unit Testing),模块测试(Module Testing),组件测试( ...

  6. HDU 1117 免费馅饼 二维动态规划

    思路:a[i][j]表示j秒在i位置的数目,dp[i][j]表示j秒在i位置最大可以收到的数目. 转移方程:d[i][j]=max(dp[i-1][j],dp[i-1][j-1],dp[i-1][j+ ...

  7. suse安装软件命令

    zypper se xxxxx 是搜索软件包 zypper in xxxxx 跟apt-get install xxxx等价 zypper rm xxxx 删除 zypper up xxxx 更新软件

  8. 新年Uber司机端换新装啦!

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. advanced dom scripting dynamic web design techniques Part One DOM SCRIPTING IN DETAIL CHAPTER 1 DO IT RIGHT WITH BEST PRACTICES

    You’re excited; your client is excited. All is well. You’ve just launched the client’s latest websit ...

  10. poj3101

    不难,结果: 程序: import java.math.*; import java.util.*; public class Main { public static void main(Strin ...