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

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

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      
 6         <LinearLayout 
 7         android:orientation="horizontal" 
 8         android:layout_width="fill_parent" 
 9         android:layout_height="fill_parent" 
10         android:layout_weight="1"> 
11           
12         <TextView 
13             android:text="red" 
14             android:gravity="center_horizontal" 
15             android:background="#aa0000" 
16             android:layout_width="wrap_content" 
17             android:layout_height="fill_parent" 
18             android:layout_weight="1" 
19             /> 
20          <!--android:gravity="center_horizontal"水平居中 -->   
21          <!--layout_weight属性以控制各个控件在布局中的相对大小。layout_weight属性是一个非负整数值。  
22              线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域。  
23             例如,在水平布局的LinearLayout中有两个Button,这两个Button的layout_weight属性值都为1,  
24             那么这两个按钮都会被拉伸到整个屏幕宽度的一半。如果layout_weight指为0,控件会按原大小显示,不会被拉伸;  
25             对于其余layout_weight属性值大于0的控件,系统将会减去layout_weight属性值为0的控件的宽度或者高度,  
26             再用剩余的宽度或高度按相应的比例来分配每一个控件显示的宽度或高度--> 
27         <TextView 
28             android:text="Teal" 
29             android:gravity="center_horizontal" 
30             android:background="#008080" 
31             android:layout_width="wrap_content" 
32             android:layout_height="fill_parent" 
33             android:layout_weight="1"/> 
34           
35         <TextView 
36             android:text="blue" 
37             android:gravity="center_horizontal" 
38             android:background="#0000aa" 
39             android:layout_width="wrap_content" 
40             android:layout_height="fill_parent" 
41             android:layout_weight="1" 
42             /> 
43           
44         <TextView 
45             android:text="orange" 
46             android:gravity="center_horizontal" 
47             android:background="#FFA500" 
48             android:layout_width="wrap_content" 
49             android:layout_height="fill_parent" 
50             android:layout_weight="1" 
51             /> 
52               
53         </LinearLayout>   
54         <LinearLayout 
55         android:orientation="vertical" 
56         android:layout_width="fill_parent" 
57         android:layout_height="fill_parent" 
58         android:layout_weight="1"> 
59           
60         <TextView 
61             android:text="row one" 
62             android:textSize="15pt" 
63             android:background="#aa0000" 
64             android:layout_width="fill_parent" 
65             android:layout_height="wrap_content" 
66             android:layout_weight="1" 
67             /> 
68         <!--  -->   
69         <TextView 
70             android:text="row two" 
71             android:textSize="15pt" 
72             android:background="#DDA0DD" 
73             android:layout_width="fill_parent" 
74             android:layout_height="wrap_content" 
75             android:layout_weight="1" 
76             /> 
77           
78         <TextView 
79             android:text="row three" 
80             android:textSize="15pt" 
81             android:background="#008080" 
82             android:layout_width="fill_parent" 
83             android:layout_height="wrap_content" 
84             android:layout_weight="1" 
85             />    
86         <TextView 
87             android:text="row four" 
88             android:textSize="15pt" 
89             android:background="#FFA500" 
90             android:layout_width="fill_parent" 
91             android:layout_height="wrap_content" 
92             android:layout_weight="1" 
93             />       
94         </LinearLayout>   
95     </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           
27     </TableLayout> 
4. 相对布局
相对布局是按照组件之间的相对位置来布局,比如在某个组件的左边,右边,上面和下面等。
相对布局常用属性请参考我博客的: http://www.cnblogs.com/ECJTUACM-873284962/p/7912841.html
简单的例子
①效果图:
 
② 核心代码:
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来代替。所以这里不再详细介绍。
目录
相关文章
|
21天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
12 0
|
12天前
|
XML 开发工具 Android开发
构建高效的安卓应用:使用Jetpack Compose优化UI开发
【4月更文挑战第7天】 随着Android开发不断进化,开发者面临着提高应用性能与简化UI构建流程的双重挑战。本文将探讨如何使用Jetpack Compose这一现代UI工具包来优化安卓应用的开发流程,并提升用户界面的流畅性与一致性。通过介绍Jetpack Compose的核心概念、与传统方法的区别以及实际集成步骤,我们旨在提供一种高效且可靠的解决方案,以帮助开发者构建响应迅速且用户体验优良的安卓应用。
|
15天前
|
监控 算法 Android开发
安卓应用开发:打造高效启动流程
【4月更文挑战第5天】 在移动应用的世界中,用户的第一印象至关重要。特别是对于安卓应用而言,启动时间是用户体验的关键指标之一。本文将深入探讨如何优化安卓应用的启动流程,从而减少启动时间,提升用户满意度。我们将从分析应用启动流程的各个阶段入手,提出一系列实用的技术策略,包括代码层面的优化、资源加载的管理以及异步初始化等,帮助开发者构建快速响应的安卓应用。
|
15天前
|
Java Android开发
Android开发之使用OpenGL实现翻书动画
本文讲述了如何使用OpenGL实现更平滑、逼真的电子书翻页动画,以解决传统贝塞尔曲线方法存在的卡顿和阴影问题。作者分享了一个改造后的外国代码示例,提供了从前往后和从后往前的翻页效果动图。文章附带了`GlTurnActivity`的Java代码片段,展示如何加载和显示书籍图片。完整工程代码可在作者的GitHub找到:https://github.com/aqi00/note/tree/master/ExmOpenGL。
19 1
Android开发之使用OpenGL实现翻书动画
|
15天前
|
Android开发 开发者
Android开发之OpenGL的画笔工具GL10
这篇文章简述了OpenGL通过GL10进行三维图形绘制,强调颜色取值范围为0.0到1.0,背景和画笔颜色设置方法;介绍了三维坐标系及与之相关的旋转、平移和缩放操作;最后探讨了坐标矩阵变换,包括设置绘图区域、调整镜头参数和改变观测方位。示例代码展示了如何使用这些方法创建简单的三维立方体。
13 1
Android开发之OpenGL的画笔工具GL10
|
21天前
|
Android开发
Android开发小技巧:怎样在 textview 前面加上一个小图标。
Android开发小技巧:怎样在 textview 前面加上一个小图标。
12 0
|
21天前
|
Android开发
Android 开发 pickerview 自定义选择器
Android 开发 pickerview 自定义选择器
12 0
|
23天前
|
缓存 Java Android开发
安卓应用开发中的内存优化策略
在移动应用开发领域,性能一直是衡量应用质量的重要指标之一。特别是对于安卓平台,由于设备的硬件配置多样化,内存管理成为开发者面临的重大挑战。本文将深入探讨针对安卓平台的内存优化技巧,包括内存泄漏的预防、合理使用数据结构和算法、以及高效的资源释放机制。通过这些方法,开发者可以显著提升应用的性能和用户体验。
|
28天前
|
Java Android开发
Android开发系列全套课程
本系列课程面向有java基础,想进入企业从事android开发的计算机专业者。学习搭配实战案例,高效掌握岗位知识。
18 1
|
29天前
|
数据可视化 测试技术 Android开发
安卓应用开发:打造高效用户界面的五大技巧
【2月更文挑战第30天】在竞争激烈的应用市场中,一个流畅且直观的用户界面(UI)对于安卓应用的成功至关重要。本文将探讨五个关键的UI设计技巧,这些技巧旨在提升用户体验并优化性能。我们将深入分析布局优化、资源管理、动画效果、响应式设计和测试流程等方面,并提供实用的代码示例和最佳实践,帮助开发者构建既美观又高效的安卓应用。