课后习题
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