Android的布局管理

概述

布局

  • 布局是Android应用程序的界面定义。
  • 布局中所有界面元素,都是视图(View)对象或试图组(ViewGroup)对象。(视图是数据库的一个独立对象,是一个虚拟表)
  • 一个布局首先是一个视图组对象,然后在视图组对象中添加子视图组对象或者视图对象。
    布局的定义方式
    可以通过两种方式来定义布局:XML定义和代码定义
  • XML定义:运用Android Studio可以快速设计UI布局及包含的界面元素
  • 代码定义:在Java或Kotlin代码中定义布局
  • 在每个应用程序创建时会默认包含一个主界面布局,该布局位于res/layout目录中。
  • 实际开发中每个应用程序都包含多个界面,而程序默认提供一个主界面布局无法满足需求,因此经常会在程序中添加多个布局。
    布局的分类

布局的分类有约束布局、线性布局、帧布局、表格布局、绝对布局、相对布局等
常用布局有以下几种:

  • 约束布局 : 通过相对定位排列
  • 线性布局 : 以水平或垂直方向排列
  • 帧布局 : 帧里的控件(层)叠加
  • 表格布局 :表格形式排列

线性布局

线性布局(LinearLayout)主要以水平或垂直的方式来显示界面中的控件。当控件水平排列时,显示顺序依次为从左到右,当控件垂直排列时,显示顺序依次从上到下。线性布局中,每行或每列中只允许有一个子视图或控件。
LinewrLayout的最主要的属性有:

  • android : gravity : 设置内部控件的显示位置。
  • android :orientation :设置内部控件的排列方向,常量horizontal(默认值)表示水平排列,vertical表示垂直排列。
  • android:layout_weight: 设置内部控件在LinearLayout中所占的权重。当控件使用权重属性时,布局宽度或高度属性值通常设置为0.
 <Button
 	android:layout_width = "0dp"
 	android:layout_height = "wrap_content"	
	android:layout_weight = "2"/>

约束布局

约束布局ConstraintLayout是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。

  • ConstraintLayout是Google在2016年的Google I/O大会上提出的一个可以灵活控制子控件的位置和大小的新布局。
  • ConstraintLayout可以在不嵌套ViewGroup的情况下实现非常庞大、复杂的布局,实现扁平化。
  • ConstraintLayout同时具有RelativeLayout和LinearLayout的有点、特点,功能强大。
  • 使用ConstraintLayout来布局时性能比其他布局方式高。
  • ConstraintLayout无论是通过布局管理器拖拽,鼠标控制的形式实现还是使用XML代码去写,都比较方便。

帧布局

帧布局是一种特殊的布局,它以层叠的方式显示布局中的多个控件

  • 帧布局主要掌握以下以下两个属性的使用
1.android:layout_gravity
2.android:visibility
  • 默认情况下,控件位于帧布局的左上角。可通过控件的android:layout_gravity属性控制其位置。
  • android:layout_gravity属性可设置为下列值:
top//控件位于布局顶部
bottom//控件位于布局底部,单独使用时等价于"left|bottom"
left//控件位于布局左侧
right//控件位于布局右侧,单独使用时等价于"top|right"
center//控件位于布局中心
center_vertical//控件位于垂直方向上的中间位置,单独使用时等价于"left|center_vertical"
center_horizontal//控件位于水平方向上的中间位置,单独使用时等价于"top|center_horizontal"
  • gravity的中文意思时“重心”就是表示view横向和纵向停靠的位置
  • android:gravity是对控件本身来说的,是用来设置控件本身的内容应该显示在控件的什么位置,默认值是左侧,也可以用来设置布局中的控件位置
  • android:layout_gravity:是相对于包含该控件的父控件来说的,设置该控件在父控件的什么位置
  • android:visibility
View.VISIALBE//可见,显示到页面
View.INVISIABLE//不可见,但是还是占用位置
View.GONE//隐藏,不可见并且不占用位置

表格布局

表格布局(TableLayout)是以表格形式排列控件的,通过行和列将界面划分为多个单元格,每个单元格都可以添加控件

  • 表格布局需要和TableRow配合使用,每一行都有TableRow对象组成,因此TableRow的数量决定表格的行数。而表格的列数是由包含最多的TableRow决定的,例如第一个TableRow有两个控件,第二个TableRow有三个控件,则表格列数为三
    表格布局属性
布局属性功能属性
android:strechColumns设置该列被拉伸
android:shrinkC设置该列被拉伸
android:collapseColumns设置该列被隐藏

表格布局控件属性

控件属性功能描述
android:layout_span设置该单元格占据几列,默认为一列
android:layout_column设置该单元显示位置

相对布局

相对布局属性集锦:
相对于兄弟元素

android:layout_below="@id/aaa":在指定View的下方
android:layout_above="@id/xxx":在指定View的上方
android:layout_toLeftOf="@id/bbb":在指定View的左边
android:layout_toRightOf="@id/cccc":在指定View的右边

相对于兄弟元素

android:layout_below="@id/aaa":在指定View的下方
android:layout_above="@id/xxx":在指定View的上方
android:layout_toLeftOf="@id/bbb":在指定View的左边
android:layout_toRightOf="@id/cccc":在指定View的右边

相对于父元素

android:layout_alignParentLeft="true":在父元素内左边
android:layout_alignParentRight="true":在父元素内右边
android:layout_alignParentTop="true":在父元素内顶部
android:layout_alignParentBottom="true":在父元素内底部 

对齐方式

android:layout_centerInParent="true":居中布局
android:layout_centerVertical="true":水平居中布局
android:layout_centerHorizontal="true":垂直居中布局
android:layout_alignTop="@id/xxx":与指定View的上边界一致
android:layout_alignBottom="@id/xxx":与指定View下边界一致
android:layout_alignLeft="@id/xxx":与指定View的左边界一致
android:layout_alignRight="@id/xxx":与指定View的右边界一致间隔
android:layout_marginBottom=""; 离某元素底边缘的距离
android:layout_marginLeft=""; 离某元素左边缘的距离
android:layout_marginRight ="";离某元素右边缘的距离
android:layout_marginTop=""; 离某元素上边缘的距离
android:layout_paddingBottom=""; 离父元素底边缘的距离
android:layout_paddingLeft=""; 离父元素左边缘的距离
android:layout_paddingRight ="";离父元素右边缘的距离
android:layout_paddingTop=""; 离父元素上边缘的距离

之后为android的简单控件https://blog.csdn.net/qq_44164791/article/details/104252517
Android的Activity(活动)https://blog.csdn.net/qq_44164791/article/details/104278506

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值