Android中常用的5大布局方式有以下几种:

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

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

常用的属性:

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

第一个实例

效果图:

核心代码如下:

main.xml

                    
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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="rowone"
  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="rowtwo"
  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="rowthree"
  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="rowfour"
  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. <?xmlversion="1.0"encoding="utf-8"?>
  2. <FrameLayoutxmlns: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. <?xmlversion="1.0"encoding="utf-8"?>
  2. <TableLayoutxmlns: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. <?xmlversion="1.0"encoding="utf-8"?>
  2. <RelativeLayoutxmlns: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="PleaseTypeHere:"
  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来代替。所以这里不再详细介绍。

更多相关文章

  1. 深入Android(安卓)【五】 —— 任务和进程
  2. Android(安卓)view 的布局学习
  3. Android自定义ScrollView实现反弹效果
  4. android之规范命名
  5. android widget开发点滴
  6. 收藏老罗的----------Android应用程序组件Content Provider简要
  7. Android应用开发———Android中的常用UI组件
  8. Android(安卓)8.0 SystemUI下拉状态栏快捷开关
  9. Android(安卓)Toolbar详解-实现Material Design 风格的导航栏

随机推荐

  1. Android(安卓)7.0调用系统相机返回路径问
  2. Android监听Dialog点击外部区域
  3. Android输入框中提示自动输入内容
  4. 禁止状态栏下拉
  5. android 背光控制 HAL层分析
  6. Android(安卓)intent 传递数组对象序列化
  7. Android(安卓)文件打开方式
  8. android 首页fragment切换
  9. 更换工程的sdk或者google apis
  10. Android(安卓)Activity设置全屏