课后习题

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 使当前界面不可操作 android常用界面布局_控件


Android应用的每个界面的根元素必须有且只有一个ViewGroup容器

2.2界面布局编写方式

2.2.1在XML文件中编写布局

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

2.2.2在Java代码中编写布局

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

android 使当前界面不可操作 android常用界面布局_android 使当前界面不可操作_02

2.3常见界面布局

2.3.1布局的通用属性

Android系统提供的五种常用布局直接或者间接继承自ViewGroup

android 使当前界面不可操作 android常用界面布局_ui_03


①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相对布局

通过相对定位的方式指定子控件的位置

通过以父容器或其他子控件为参照物,指定布局中子控件的位置

android 使当前界面不可操作 android常用界面布局_android 使当前界面不可操作_04

2.3.3LinearLayout线性布局

通常指定布局内的子控件水平或者竖直排列

android 使当前界面不可操作 android常用界面布局_android_05


①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所支持的属性

android 使当前界面不可操作 android常用界面布局_android 使当前界面不可操作_06

android 使当前界面不可操作 android常用界面布局_Android_07


在TableLayout布局中,列的宽度由该列中最宽的那个单元格决定,整个表格布局的宽度取决于父容器的宽度

2.3.5FrameLayout帧布局

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

android 使当前界面不可操作 android常用界面布局_android 使当前界面不可操作_08

2.3.6ConstraintLayout约束布局

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