Android 用户界面布局管理
Android 系统按照 MVC (模型( model ) —— 视图( view ) —— 控制器( controller ) )设计模式将应用程序的界面设计与功能控制设计分离,类似于前后端分离,可以单独修改用户界面和实现功能的控制代码。
在 Android Studio 中前端的界面布局文件是在生成的应用程序框架项目的 res 资源目录下的 layout 子目录中,文件名为 activity_main.xml(创建新项目时可以改名字)。如果要调用资源文件,就使用 R.txt 的R类,把 res 目录中的资源与 id 编号进行映射,用 id 号进行管理。
布局文件的规范
-
布局文件作为项目的资源存放在 res\layout 目录下,是 .xml 文件,默认文件名为 activity_main.xml。
-
布局文件的根节点通常是一个布局方式,在根节点内可以添加组件作为结点。
-
布局文件的根节点必须包含一个命名空间,为了与其他项目进行分离。
如下:
xmlns:android="http://schemas.android.com/apk/res/android"
-
如果要实现 Java 程序中控制界面的组件,则必须为界面文件的组件定义一个id,也就是通过 id 把资源文件以及组件引用过来进行控制。
组件定义格式:
android:id = "@+id/<组件id>"
布局方式
线性布局 —— LinearLayout
相对布局 —— RelativeLayout
帧布局 —— FrameLayout
表格布局 —— TableLayout
绝对布局 —— AbsolateLayout(在 android 1.6 中已经被抛弃)
线性布局
线性布局就是将放入其中的组件按照垂直或水平方向来布局,也就是控制放入其中的组件横向或纵向排列。
属性 | 作用 |
---|---|
andrioid : orientation = "" | 设置组件的排列方式,两个属性 horizontal(水平排列)和 vertical(垂直排列) |
android : gravity = "" | 设置管理器内部组件的位置,常用的选值为 center_horizontal,center_vertical,center 等等 |
android : background = "" | 设置属性的背景,可以是背景图片或者背景颜色 |
水平线性布局效果图
垂直线性布局效果图
相对布局
相对布局是指按照组件之间的相对位置来进行布局,如A组件在B组建的左边,右边,上方或下方等。
属性 | 作用 |
---|---|
android : layout_alignLeft,Right,Bottom,Top | 指定该组件位于某个组建的左边,右边,下边,上边对齐 |
android : layout_alignParentLeft,Right,Bottom,Top | 指定该组件位于布局管理器左边,右边,底部,顶部对齐 |
android : layout_centerHorizontal | 指定该组件位于布局管理器水平居中的位置 |
android : layout_centerVertical | 指定该组件位于布局管理器垂直居中的位置 |
android : layout_centerInParent | 指定该组件位于布局管理器的中央位置 |
android : layout_toRightOf,toLeftOf,above,below | 指定该组件位于某个组件的右侧,左侧,上方,下方 |
android : layout_marginLeft,Right,Bottom,Top | 指定该组件左边缘,右边缘,下边缘,上边缘的距离 、 |
帧布局
帧布局就是多个组件层叠排序,后面的组件覆盖前面的组件。(个人理解)
属性 | 作用 |
---|---|
android : foreground | 设置该帧布局容器的前景图像 |
android : foregroundGravith | 定义回执前景图像的gravity属性,即前景图像显示的位置 |
效果图
表格布局
android提供的表格布局,见名知意就是表格的形式,我们需要在表格里面去添加组件,以此来实现UI界面。
效果图
注意:合理的界面的布局结构应是宽而浅,而不是窄而深。
布局文件常用的重要属性值
设置组件大小的属性值
- wrap_contont:强制性地使视图扩展以显示全部内容,完整显示其内部的文本和图像,根据组件内容的大小来决定组件的大小。
- match_parent:Android2.2以上和fill_parent通用,填充在容器的所有空间。
- fill_parent:强制性地使构件扩展,以填充布局单元内尽可能多的空间,就是强制性让它布满整个屏幕。
设置组件大小的单位
- px ( pixels ) :像素,即屏幕上的发光点。
- dp ( 或dip,全称为 device independent pixels ):设备独立像素,一种支持多分辨率设备的抽象单位,和硬件相关。
- sp ( scaled pixels ):比例像素,设置字体大小。
设置组件的对齐方式
- 在组件中由 "android : gravity" 属性控制组件的对齐方式,其属性有上 ( top ),下 ( bottom ),左 ( left ),右 ( right ),水平方向居中 ( center_horizontal ),垂直方向居中 ( center_vertical )等。
注意:修改按钮颜色时可能会遇到这种情况
我们在布局中添加按钮,并对其进行改变背景为 @color/teal_200 的操作,按钮颜色并未发生变化,如下图
可以看见根目录 res 下的 themes.xml 文件中显示 android studio 的默认主题模式如下:
我们只需要对 themes.xml 文件的主题进行修改即可(这里我是改为的是 Bridge)
可以观察到按钮颜色能够被修改了(OK!!!)