View视图
- 所有的UI元素都是通过View与ViewGroup构建的,对于一个Android应用的用户界面来说,ViewGroup作为容器盛装界面中的控件,它可以包含普通的View控件,也可以包含ViewGroup。
界面布局编写方式
- 在XML文件中编写布局:推荐此种方式布局
- 有效的将界面中布局的代码和Java代码隔离,使程序的结构更加清晰。
- 在Java代码中编写布局
- 在Android中所有布局和控件的对象都可以通过new关键字创建出来,将创建的View控件添加到ViewGroup布局中,从而实现View控件在布局界面中显示。
常见界面布局
- 布局的通用属性
- Android系统提供的五种常用布局直接或者间接继承自ViewGroup,因此它们也支持在ViewGroup中定义的属性,这些属性可以看作是布局的通用属性。
- Android系统提供的五种常用布局直接或者间接继承自ViewGroup,因此它们也支持在ViewGroup中定义的属性,这些属性可以看作是布局的通用属性。
相对布局
- 相对布局(RelativeLayout)是通过相对定位的方式指定子控件位置,即以其它控件或父容器为参照物,摆放控件位置。
- 定义格式
线性布局
- 线性布局(LinearLayout)主要以水平或垂直方式来显示界面中的控件。当控件水平排列时,显示顺序依次为从左到右,当控件垂直排列时,显示顺序依次为从上到下。
注意事项- LinearLayout布局中的android:layout_width属性值不可设为wrap_content。
这是因为LinearLayout的优先级比Button高,如果设置为wrap_content,则Button控件的android:layout_weight属性会失去作用。
注意:当控件使用权重属性时,布局宽度属性值通常设置为0dp。<Button android:layout_width="0dp" android:layout_height="wrap_content" android: layout_weight ="2"/>
- LinearLayout布局中的android:layout_width属性值不可设为wrap_content。
表格布局
-
采用行、列的形式来管理控件,它不需要明确声明包含多少行、多少列,而是通过在TableLayout布局中添加TableRow布局来控制表格的行数,通过在TableRow布局中添加控件来控制表格的列数。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 属性 = ”属性值”> <TableRow> UI控件 </TableRow> ...... </TableLayout>
帧布局
-
帧布局(FrameLayout)用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层
-
所有控件都默认显示在屏幕左上角。
-
定义格式
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 属性 ="属性值"> </FrameLayout>
约束布局
- ConstraintLayout是Android Studio2.2新添加的布局。
- 它适合使用可视化的方式编写界面布局——当然,可视化操作的背后仍然是使用XML代码实现的,只不过这些代码是Android Studio根据我们的操作自动生成的。
- 相对定位
- 居中定位和倾向
- Chain
① 相对定位
- 相对定位是在ConstraintLayout中创建布局的基本构建方法之一。相对定位即一个控件相对于另一个控件进行定位。
- ConstraintLayout布局中的控件可以在横向和纵向上以添加约束关系的方式进行相对定位,其中,横向边包括Left、Start、Right、End,纵向边包括Top、Bottom、Baseline(文本底部的基准线)。
② 居中定位和倾向
-
在ConstraintLayout布局中,控件可以通过添加约束的方式确定该控件在父布局(ConstraintLayout)中的相对位置。
-
当相同方向上(横向或纵向),控件两边同时向ConstraintLayout添加约束,则控件在添加约束的方向上居中显示。
-
父布局中横向居中
-
在约束是同向相反的情况下,默认控件是居中的,但是也像拔河一样,两个约束的力大小不等时,就会产生倾向。
注意:如果ConstraintLayout布局中的控件在居中方向(横向或者纵向)上和父布局(ConstraintLayout)的尺寸一致,此时该方向的居中约束和倾向没有意义。
③ Chain
- Chain(链)是一种特殊的约束,他使我们能够对一组水平或竖直方向互相关联的控件进行统一管理。一组控件通过一个双向的约束关系链接起来,就能形成一个Chain。
- Chain样式