第2章 Android常见界面布局

课后习题

1. 列举Android中的常用布局,并简述他们各自的特点

Android中有五种常用布局,分别为RelativeLayout(相对布局)、LinearLayout(线性布局)、FrameLayout(帧布局)、TableLayout(表格布局)、ConstraintLayout(约束布局),他们的特点具体如下:
(1)RelativeLayout(相对布局):该布局是通过相对位置的方式指定该布局内子控件的位置,以父容器或者其他子组件为参照物,指定布局中子控件的位置。
(2)LinearLayout(线性布局):该布局可通过android:orientation属性指定该布局内的子控件水平和竖直排列。
(3)TableLayout(表格布局):采用行、列的形式来管理控件。他通常搭配TableRow布局使用,一个TableRow代表一行,在TableRow中添加的控件代表一列。
(4)FrameLayout(帧布局):该布局会在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层。默认情况下,帧布局中的所有控件会与左上角对齐。
(5)ConstraintLayout(约束布局):该布局是Android2.2新添加的布局,他适用于可视化的方式编写界面布局,他有相对定位、居中定位和倾向、Chain等性质。

2.1View视图

Android所有的UI元素都是通过View与ViewGroup构建的,ViewGroup作为容器盛装界面中的空间,可以包含普通的View控件,也可以包含ViewGroup
在这里插入图片描述
Android应用的每个界面的根元素必须有且只有一个ViewGroup容器

2.2界面布局编写方式

2.2.1在XML文件中编写布局

有效地将界面中的布局代码和Java代码隔离,使程序的结构更加清晰
RelativeLayout继承自ViewGroup,TextView继承自View

2.2.2在Java代码中编写布局

在Android中所有布局和控件的对象都可以通过new关键字创建出来,将创建的View空间添加到ViewGroup布局中,从而实现View空间在布局界面中显示
在这里插入图片描述

2.3常见界面布局

2.3.1布局的通用属性

Android系统提供的五种常用布局直接或者间接继承自ViewGroup
在这里插入图片描述
①android:id
当前布局的唯一标识
XML文件中:通过"@+id/属性名称"定义
Java代码中:为布局指定android:id属性后,在R.java文件中,会自动生成对应的int值,在Java代码中通过为findViewById()方法传入该int值来获取该布局对象
②android:layout_width/android:layout_height
fill_parent/match_parent/wrap_content
③android:background
可以引用图片资源,也可以是颜色资源

2.3.2RelativeLayout相对布局

通过相对定位的方式指定子控件的位置
通过以父容器或其他子控件为参照物,指定布局中子控件的位置
在这里插入图片描述

2.3.3LinearLayout线性布局

通常指定布局内的子控件水平或者竖直排列
在这里插入图片描述
①android:orientation属性
vertical/horizontal
②android:layout_weight属性
按权重比显示大小
只有在android:layout_width设置为0dp时才会有权重占比的效果
并且父布局的android:layout_width不能设置为wrap_content

2.3.4TableLayout表格布局

采用行、列的形式来管理控件,它不需要明确声明包含多少行、多少列,而是通过在TableLayout布局中添加TableRow布局或控件来控制表格的行数,可以在TableRow布局中添加控件来控制表格的列数
TableLayout继承自LinearLayout,完全支持LinearLayout所支持的属性
在这里插入图片描述在这里插入图片描述
在TableLayout布局中,列的宽度由该列中最宽的那个单元格决定,整个表格布局的宽度取决于父容器的宽度

2.3.5FrameLayout帧布局

FrameLayout帧布局用于在屏幕中创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的空间会叠加在上一个控件上层。默认情况下,帧布局中的所有控件都会与在左上角对齐
在这里插入图片描述

2.3.6ConstraintLayout约束布局

ConstraintLayout是Android Studio 2.2新添加的布局,不适合使用XML代码的方式编写布局,适合使用可视化的方法编写界面布局
特性:
①相对定位
②居中定位和倾向
③Chain

### 关于《Android移动应用基础教程》第三版 第2 Android 常见界面布局 #### 2.1 界面布局概述 在开发Android应用程序时,界面布局是指如何安排屏幕上的各个组件以及它们之间的相对位置。良好的布局不仅能够提升用户体验,还能使开发者更方便地管理和调整UI元素。 #### 2.2 LinearLayout线性布局 LinearLayout是最简单的布局方式之一,它按照垂直或水平方向依次排列子视图。通过设置`android:orientation="vertical"`可以实现竖直排列;而`horizontal`则表示横向排列[^2]。 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <!-- 子View --> </LinearLayout> ``` #### 2.3 RelativeLayout相对布局 RelativeLayout允许根据父容器或其他兄弟节点来定位当前视图的位置。这种方式提供了更大的灵活性,在复杂页面的设计中有广泛应用价值。 ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/text_view_1" android:text="Text View 1"/> <Button android:layout_below="@id/text_view_1" android:text="Button Below Text"/> </RelativeLayout> ``` #### 2.4 ConstraintLayout约束布局 ConstraintLayout是从Android Support Library v8引入的一种新型高效布局管理器。相比传统的绝对坐标系或者嵌套多层的传统布局方案,使用较少层次结构即可完成复杂的UI构建工作,并且支持拖拽式编辑工具。 ```xml <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" ... /> <Button app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" ... /> </android.support.constraint.ConstraintLayout> ``` #### 2.5 TableLayout表格布局 TableLayout由TableRow组成,类似于HTML中的table标签。每一行代表一个TableRow对象,可以在其中放置多个控件形成列的效果。这种布局适用于展示具有行列关系的数据集。 ```xml <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow> <TextView/> <TextView/> </TableRow> <TableRow> <TextView/> <TextView/> </TableRow> </TableLayout> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

so.far_away

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值