第2章 Android常见界面布局

  • 第2章 Android常见界面布局
    • 2.1 View视图
    • 2.2 界面布局编写方式
      • 2.2.1 在XML文件中编写布局
      • 2.2.2 在Java代码中编写布局
    • 2.3 常见界面布局
      • 2.3.1 布局的通用性
      • 2.3.2 RelativeLayout相对布局
      • 2.3.3 LinearLayout线性布局
      • 2.3.4 TableLayout表格布局
      • 2.3.5 FrameLayout帧布局
      • 2.3.6 ConstraintLayout约束布局

2.1 View视图

Android所有的UI元素都是通过View与ViewGroup构建的,对于一个Android应用的用户界面来说,ViewGroup作 为容器盛装界面中的控件,它可以包含普通的View控件,也可以包含ViewGroup

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

ViewGroup和View控件的包含关系

2.2 界面布局编写方式

2.2.1 在XML文件中编写布局

Android可以使用XML布局文件控制界面布局,从而有效地将界面中布局的代码和Java代码隔离,使程序的结构更加清晰,因此多数Android程序采用这种方式编写布局

布局文件通常放在res/layout文件夹中

上述代码中,定义了一个相对布局RelativeLayout,在该布局中定义了一个TextView控件,其中RelativeLayout继承自ViewGroup, TextView继承 自View

2.2.2 在Java代码中编写布局

Android程序的布局不仅可以在XML布局文件中编写,还可以在Java代码中编写,在Android中所有布局和控件的对象都可以通过new关键字创建出来,将创建的View控件添加到ViewGroup布局中,从而实现View控件在布局界面中显示

代码解释

  • 创建RelativeLayout对象

  • 首先创建LayoutParams对象,接着定义RelativeLayout的宽和高,并令RelativeLayout中的空间居中显示

  • 创建TextView对象,分别调用相应方法设置文本信息

  • 通过addView()方法将TextView对象和LayoutParams对象添加到RelativeLayout布局中

  • 通过setContentView()方法将RelativeLayout布局添加到Activity界面中

注意:无论是哪种方式编写布局,它们控制Android用户界面行为的本质是完全一样的,大多数时候,控制UI元素的XML属性都有相应的方法

2.3 常见界面布局

为了适应不同的界面风格,Android系统提供了五种常用布局,分别为RelativeLayout (相对布局)、LinearLayout (线性布局)、FrameLayout (帧布局)、TableLayout (表格布局)、ConstraintLayout (约束布局)

2.3.1 布局的通用性

Android系统提供的五种常用布局直接或者间接继承自ViewGroup,因此五种常用的布局也支持在ViewGroup中定义的属性,这些属性可以看作布局的通用属性

(1)android:id

用于设置当前布局的唯一标识,在XML文件中它的属性值通过 ”@+id/属性名称“ 定义的,为布局指定id后,在R.java文件中会自动生成对应的int值,Java代码通过为findViewById()方法传入该int值来获取该布局的对象

(2)android:layout_width

用于设置布局的宽度,其值可以是具体的尺寸,如50dp, 也可以是系统定义的值,具体如下:

  • fll parent: 表示该布局的宽度与父容器(从根元素讲是屏幕)的宽度相同
  • match_ parent: 与fill parent的 作用相同,从Android 2.2开始推荐使用match _parent
  • wrap_ content: 表示该布局的宽度恰好能包裹它的内容

(3)android:layout_height

用于设置布局的高度,其值可以是具体的尺寸,如50dp, 也可以是系统定义的值,具体与android:layout_width相似

(4)android:background

用于设置布局背景,其值可以引用图片资源或颜色资源

(5)android:layout_margin

用于设置当前布局与屏幕边界、周围布局或控件的距离,属性值为具体的尺寸,与之相似的还有android:layout_marginTop/Bottom/Left/Right,分别用于设置当前布局与屏幕、周围布局或者控件的上下左右边界的距离

(6)android:padding

用于设置当前布局内控件与该布局的距离,与之相似的还有android:paddingTop/Bottom/Left/Right,分别用于设置当前布局中控件与该布局上下左右的距离

注意:Android系统提供的五种常用布局必须设置android:layout_widthandroid:layout_height,其他属性可以根据需求设置

2.3.2 RelativeLayout相对布局

RelativeLayout(相对布局)通过相对定位的方式指定子控件的位置,在XML布局文件中定义相对布局时使用标签,通过父容器或其他子控件为参照物,指定布局中子控件的位置,子控件属性表:

典例:在相对布局中指定三个按钮的位置

布局和控件的宽高

为了让Android程序拥有更好的屏幕适配能力,在设置控件和布局宽高时最好使用“match_parent”或“wrap_ content” ,尽量避免将控件的宽高设置为固定值因为控件在很多情况下会相互挤压,从而导致控件变形

但特殊情况下需要使用指定宽高值时,可以选择使用px、 pt. dp. sp四种单位

2.3.3 LinearLayout线性布局

LinearLayout(线性布局)通常指定布局内的子控件水平或竖直排列,常用属性:

(1)android:orientation属性,用于设置LinearLayout布局中控件的排列顺序,可选其值为vertical和horizontal(分别表示从上到下竖直排列和从左到右水平排列)

(2)android:layout_weight属性:通过设置该属性值,使布局内的空间按照权重比显示大小,在进行屏幕适配时有关键作用

典例:android:orientation属性和android:layout_weight属性的使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3.4 TableLayout表格布局

TableLayout (表格布局)采用行、列的形式来管理控件,它不需要明确声明包含多少行、多少列,而是通过在TableLayout布局中添加TableRow布局或控件来控制表格的行数,可以在TableRow布局中添加控件来控制表格的列数

TableLayout 继承自LinearLayout,因此它完全支持LinearLayout所支持的属性,它还有其他常用属性:

TableLayout 布局的常用属性

TableLayout 布局中控件的常用属性

注意:列的宽度由最宽的单元格(控件)觉得,整个表格布局的宽度取决于父容器的宽度

典例:三行三列表格布局

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3.5 FrameLayout帧布局

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

FrameLayout 属性

典例:使用android:foreground和android:foregroundGravity属性指定控件位置

2.3.6 ConstraintLayout约束布局

ConstraintLayout是Android Studio 2.2新添加的布局。与前面介绍的界面布局相比,ConstraintLayout并不太适合使用XML代码的方式编写布局,但是它非常适合使用可视化的方式编写界面布局,当然可视化操作的背后仍然是使用XML代码实现的,只不过这些代码是Android Q Studio根据我们的操作自动生成的

(1)相对定位

相对定位是在ConstraintLayout中创建布局的基本构建方法之一.相对定位即一个控件相对于另一个控件进行定位,ConstraintLayout布局中的控件可以在横向和纵向上以添加约束关系的方式进行相对定位,其中,横向边包括left、start、 right、 end, 纵向边包括top、bottom. baseline (文本底部的基准线)

将控件B约束到控件A的右侧:

每一条边都能与其他控件形成约束,这些边形成相对定位关系的属性:

(2)居中定位和倾向

在ConstraintLayout布局中,不仅两个控件之间可以通过添加约束的方式确定控件的相对位置,控件也可以通过添加约束的方式确定该控件在父布局(ConstraintLayout) 中的相对位置

当相同方向上(横向或纵向),控件两边同时向ConstraintLayout添加约束,则控件在添加约束的方向上居中显示。在父布局中横向居中在约束是同向相反的情况下,默认控件是居中的,但是也像拔河-样,两个约束的力大小不等时,就会产生倾向

倾向的属性

注意:若ConstraintLayout布局中的控件在居中方向上和父局部的尺寸一致,此时该方向的居中约束和倾向没有意义

(3)Chain

Chain (链)是一种特殊的约束,它使我们能够对一组水平或竖直方向互相关联的控件进行统一-管理,一组控件通过一个双向的约束关系链接起来,就能形成一个Chain.

图2-10 Chain约束的头控件可以通过layout_ constraintHorizontal. chainStyle 和ayout. constraintVertical. _chainStye属性设置水平链条和竖直链条的样式。其属性值为spread、spread inside 和packed,具体如下:

(1) spread: 设置控件在布局内平均分布。其为Chain的默认样式。

(2) spread_ inside: 设置两端的控件与父布局无间距显示,其他的控件将在剩余的空间内采用spread样式进行布局。

(3) packed:设置Chain中的所有控件合并在- -起后在布局内居中显示。

ConstraintLayout布局中,当控件宽或者高的属性设置为0dp时,Chain的3种样式可以搭

图2-10中,Chain中的第一 一个控件A称为头控件,
Chain
图2-10 Chain约束
的头控件可以通过layout_ constraintHorizontal. chainStyle 和ayout. constraintVertical. chainStye属性设
置水平链条和竖直链条的样式。其属性值为spread、spread inside 和packed,具体如下:
(1) spread: 设置控件在布局内平均分布。其为Chain的默认样式

(2) spread_ inside: 设置两端的控件与父布局无间距显示,其他的控件将在剩余的空间内采
用spread样式进行布局

(3) packed:设置Chain中的所有控件合并在-一起后在布局内居中显示

ConstraintLayout布局中,当控件宽或者高的属性设置为0dp时,Chain的3种样式可以搭
配layout_ constraintHorizontal_ weight属 性形成Weighted Chain的样式. packed可 以搭配layout_constraintHorizontal_ bias属 性控制Chain与父容器的间距从而形成Packed Chain With Bias样式

如果文章对您有所帮助,记得一键三连支持一下哦~

Android常见界面布局相关推荐

  1. Android常见界面布局(详细介绍)

    一.View视图 所有的UI元素都是通过View与ViewGroup构建的,对于一个Android应用的用户界面来说,ViewGroup作为容器盛装界面中的控件,它可以包含普通的View控件,也可以包 ...

  2. 第2章 Android常见界面布局

    课后习题 1. 列举Android中的常用布局,并简述他们各自的特点 Android中有五种常用布局,分别为RelativeLayout(相对布局).LinearLayout(线性布局).FrameL ...

  3. 《Android移动应用基础教程》(Android Studio)(第二版)黑马教程 课后题答案第2章 Android常见界面布局

    一.填空题 1.ViewGroup 2.LinearLayout 3.TableRow 4.RelativeLayout LinearLayout 5.iInt 二.判断题 1.√ 2.× 3.√ 4 ...

  4. (2)Android常见界面布局

    文章目录 2.1 View控件 2.2 界面布局编写方式 XML中编写 Java中编写 2.3 界面布局的通用属性 android:id android:layout_width&&a ...

  5. CH2-Android常见界面布局

    文章目录 目标 一.View视图 二.界面布局编写方式 2.1 在XML文件中编写布局 2.2 在Java代码中编写布局 三.界面布局的通用属性 四.线性布局 4.1 LinearLayout 4.2 ...

  6. Android 常见界面控件(ListView、RecyclerView、自定义View篇)

    Android 常见界面控件(ListView.RecyclerView.自定义View篇) 目录 3.3 ListView的使用 3.3.1 ListView控件的简单使用 3.3.2 常用数据适配 ...

  7. Android常见页面布局

    在Android应用程序中,界面由布局和控件组成.布局如框架,控件如砖瓦. View控件 Android所有的UI元素都是通过View控件和ViewGroup容器构建的.在一个应用程序中ViewGro ...

  8. android10桌面布局好看,让你的Android手机界面布局更好看

    机友是否觉得你的Android界面布局不够好看?想换一种手机界面?也许很多朋友都能够很简单Android界面美化,但是太深入的操作就不会了,那么下面我为大家介绍另一种风格的界面,使你的手机界面变的更加 ...

  9. 常见界面布局之LinearLayout线性布局

    1.什么是LinearLayout线性布局 LinearLayout (线性布局)通常指定布局内的子控件水平或者轻直排列.在XML布局文件中定义线性布局的基本语法格式如下: <LinearLay ...

最新文章

  1. XamarinSQLite教程在Xamarin.Android项目中提取数据库文件
  2. win7下安装rose
  3. controller属于哪一层_别急着换5G,4G手机同样值得考虑!哪几款安卓手机称得上4G机皇?...
  4. 移植wpa_supplicant 2.5 实现rtl8188可以无线上网
  5. rls数据预测_SQL Server数据安全功能RLS(行级安全性)和GDPR
  6. java xml转html_如何在Java中将XML文档转换成HTML文档.pdf
  7. Linux多进程编程之在线词典
  8. remmima 不能保存_不再使用RememBear密码管理器忘记密码
  9. mysql之 xtrabackup原理、备份日志分析、备份信息获取
  10. MATLAB中滤波演示
  11. 统计学和python_深入浅出统计学系列python实现
  12. NB-IOT模块学习
  13. ALK/NH2/COOH/NHS/N3/hydrazide/maleimide/Tetrazine/DBCO/寡聚物等基团修饰BODIPY630/650氟硼荧
  14. sql分组排序mysql_SQL分组排序
  15. latex中极限号下边怎么打_latex 极限下标
  16. python提取pdf文件数据
  17. 网络安全-MS17-010漏洞-永恒之蓝
  18. 刚开发的游戏《天黑请闭眼》
  19. Linux基础系列—Linux体系结构和Linux内核结构
  20. vue-router 是什么?它有哪些组件

热门文章

  1. 对github的中间人攻击
  2. 招聘 | 国家电网-北京-2024电力设备认知智能技术研发实习生
  3. 电子发票+SaaS服务,票加加为企业提供票税智能管理解决方案
  4. 今早看到路边雨后桃花
  5. 【C++入门】类和对象(中)
  6. 算法提高 ADV-76 GDP计算
  7. 99%的人都不知道,女孩子学编程居然有这么多好处!
  8. Python标准库datetime之datetime模块详解
  9. Mac突然没有声音但是重启后可以恢复
  10. D3.js 使用geojson绘制地图