文章目录

  • 6大布局管理器详解
    • 1. LinearLayout 线性布局管理器
    • 2. TableLayout 表格布局管理器
    • 3. GridLayout 网格布局管理器
    • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • 4. AbsoulteLayout 绝对布局管理器
    • 5. RelativeLayout 相对布局管理器
    • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • 6. FrameLayout帧式布局

为什么要使用布局管理器?

根据屏幕大小,管理容器内的控件,自动适配组件在手机屏幕中的位置

6大布局管理器详解

1. LinearLayout 线性布局管理器



demo效果:
可以看到xml布局文件中的
"2.3 第三列按钮" 因为超出容器,所以不显示;
"1.2 第二层按钮" 在容器中右对齐, 按钮自身文字靠左靠下

代码的位置:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><!-- 线性布局中嵌套布局, LinearLayout vertical 纵向排列--><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"   android:orientation="vertical"><Buttonandroid:layout_width="wrap_content" android:layout_height="wrap_content"android:text="1.1 第一层按钮"/><Buttonandroid:layout_width="200dp" android:layout_height="wrap_content"android:layout_gravity="right"android:gravity="left|bottom"android:text="1.2 第二层按钮"/></LinearLayout><!-- 线性布局中嵌套布局, LinearLayout horizontal 横向排列--><LinearLayout android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:layout_width="wrap_content" android:layout_height="wrap_content"android:text="2.1 第1列按钮"/><Buttonandroid:layout_width="match_parent" android:layout_height="wrap_content"android:text="2.2 第二列按钮"/><Buttonandroid:layout_width="wrap_content" android:layout_height="wrap_content"android:text="2.3 第三列按钮"/></LinearLayout>
</LinearLayout>

2. TableLayout 表格布局管理器

Ⅰ. 表格布局继承自LinearLayout线性布局

Ⅱ. 表格布局用行、列方式来管理容器内的控件

Ⅲ. 表格布局不需要制定多少行列,布局内每添加一行TableRow表示添加一行,然后再在TableRow添加子控件,容器的列数由包含列数最多的行决定

Ⅳ. 重要属性说明

android:stretchColumns,为TableLayout容器里面设置属性,表示 被设置的这些列 可拉伸 (注意:TableLayout中列的索引从0开始)

android:shrinkColumns, 为TableLayout容器里面设置属性,表示 被设置的这些列 可收缩

android:layout_column, 在容器里面的控件设置属性,指定该控件在TableRow中的指定列

android:layout_span, 合并

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:stretchColumns="0,2"android:shrinkColumns="1"android:collapseColumns="2"><!-- 注意:第3列超出了屏幕大小,所以不显示 --><TableRow><Button android:text="第1行  第1列"/><Button android:text="第1行  第2列"/><Button android:text="第1行  第3列"/></TableRow><!-- 不用TableRow,直接使用控件占据一行 --><Button android:text="第2行 第1列:单独的Button,非TableRow"/><!-- android:layout_column 属性指定该组件到该行的指定列--><TableRow><Button android:text="第3行  指定到第2列"            android:layout_column="1"/></TableRow><!-- layout_span 属性指定该组件占据多少列--><TableRow><Button android:text="第4行 第1列   指定占据2列空间...."  android:layout_span="2"/></TableRow></TableLayout>

3. GridLayout 网格布局管理器

就是将布局划分为类似Excel一样有一定行数和列数并且排列整齐的单元格(单元格指代控件),然后通过跨行和跨列设置单个单元格大小

相关属性:
布局行数和列数
rowCount:行数
columnCount:列数
单元格操作
layout_row:子控件在布局的行数
layout_column:子控件在布局的列数
layout_rowSpan:跨行数
layout_columnSpan:跨列数

实现效果:

这个没什么说的直接上代码


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:padding="10dp"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><GridLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:columnCount="5"android:rowCount="7"><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="0"android:text="MC" /><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="1"android:text="MR" /><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="2"android:text="MS" /><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="3"android:text="M+" /><Buttonandroid:layout_width="65dp"android:layout_row="1"android:layout_column="4"android:text="M-" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="0"android:text="←" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="1"android:text="CE" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="2"android:text="C" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="3"android:text="±" /><Buttonandroid:layout_width="65dp"android:layout_row="2"android:layout_column="4"android:text="√" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="0"android:text="7" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="1"android:text="8" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="2"android:text="9" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="3"android:text="/" /><Buttonandroid:layout_width="65dp"android:layout_row="3"android:layout_column="4"android:text="%" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="0"android:text="4" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="1"android:text="5" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="2"android:text="6" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="3"android:text="*" /><Buttonandroid:layout_width="65dp"android:layout_row="4"android:layout_column="4"android:text="1/x" /><Buttonandroid:layout_width="65dp"android:layout_row="5"android:layout_column="0"android:text="1" /><Buttonandroid:layout_width="65dp"android:layout_row="5"android:layout_column="1"android:text="2" /><Buttonandroid:layout_width="65dp"android:layout_row="5"android:layout_column="2"android:text="3" /><Buttonandroid:layout_width="65dp"android:layout_row="5"android:layout_column="3"android:text="-" /><Buttonandroid:layout_width="65dp"android:layout_height="95dp"android:layout_row="5"android:layout_rowSpan="2"android:layout_column="4"android:text="=" /><Buttonandroid:layout_width="130dp"android:layout_row="6"android:layout_column="0"android:layout_columnSpan="2"android:text="0" /><Buttonandroid:layout_width="65dp"android:layout_row="6"android:layout_column="2"android:text="." /><Buttonandroid:layout_width="65dp"android:layout_row="6"android:layout_column="3"android:text="+" /></GridLayout></LinearLayout>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4. AbsoulteLayout 绝对布局管理器

容器管理容器内控件的位置大小,开发人员通过指定X、Y坐标指定组件的位置

android:layout_x,指定控件在容器中的 x 坐标值
android:layout_y,指定控件在容器中的 y 坐标值

实际应用中一般不适用AbsoulteLayout,因为应用该APP的手机屏幕大小,分辨率肯定会不同

实现效果:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><TextView android:id="@+id/tv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:height="200dp"android:width="200dp"android:layout_x="100dp"android:layout_y="80dp"android:textSize="50sp"android:textColor="#ffffff"android:background="#680000"/><TextView android:layout_width="wrap_content"android:layout_height="wrap_content"android:height="200dp"android:width="200dp"android:layout_x="10dp"android:layout_y="250dp"android:textSize="50sp"android:textColor="#680000"android:background="#00cc88"android:text="绝对布局我在这"/>
</AbsoluteLayout>

5. RelativeLayout 相对布局管理器

参考博客:安卓学习:相对布局

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

6. FrameLayout帧式布局


上述代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/tvBottom"android:layout_width="300dp"android:layout_height="300dp"android:layout_gravity="center"android:background="#ff0000"android:text="最底层"/><TextViewandroid:id="@+id/tvMiddle"android:layout_width="200dp"android:layout_height="200dp"android:layout_gravity="center"android:background="#0000ff"android:text="中间层"/><TextViewandroid:id="@+id/tvTop"android:layout_width="100dp"android:layout_height="100dp"android:layout_gravity="center"android:background="#00ff00"android:text="顶层"/></FrameLayout>
</LinearLayout>

Android中的6大布局管理器相关推荐

  1. Android中常见五种布局管理器——RelativeLayout、LinearLayout、FrameLayout、TableLayout、GridLayout

    目录 布局管理器 RelativeLayout 常见属性 Relative的实践操作(实现软件更新界面) LinearLayout 常见属性 LinearLayout的实践操作(模范登录以及微信底部) ...

  2. Android UI详解之布局管理器(一)

    Android UI详解之布局管理器 一.布局管理器 ①顶级父类View ②子类GroupView ③AbsoluteLayout.FrameLayout.LinearLayout.GridLayou ...

  3. JAVA布局管理器导包_在 Java 中,要使用布局管理器,必须导入下列( )包。_计算机网络基础答案_学小易找答案...

    [单选题]详图索引符号中的分子编号4代表( ). [单选题]MCS - 51 单片机的 CPU 主要的组成部分为( ) [判断题]路由器工作在物理层,其实现路径选择和寻址的功能.( ); [单选题]禅 ...

  4. Android精讲--界面编程2(布局管理器)

    为什么需要布局管理器 为了更好地管理Android应用的用户界面里的各种组件,Android提供了布局管理器.通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性.通常来说,推荐使 ...

  5. 疯狂Android讲义(二)——第二部分:第1组UI组件(布局管理器)

    一.第1组UI组件:布局管理器 Android 的界面组件比较多,不利于掌握它们内在的关系.为了帮助读者更好地掌握Android界面组件的关系,本书将会把这些界面组件按照它们的关联分析,分为几组进行介 ...

  6. java 布局管理器_有时在Java中,一个布局管理器是不够的

    java 布局管理器 在开发Java Swing应用程序时,最经常的是,我们需要在多个嵌套面板中使用多个布局管理器. 这通常不是问题,被认为是几乎所有人类已知语言的所有UI开发的常规做法. 但是,大多 ...

  7. 有时在Java中,一个布局管理器是不够的

    在开发Java Swing应用程序时,最经常的是,我们需要在多个嵌套面板中使用多个布局管理器. 通常这不是问题,并且被认为是几乎所有人类已知语言的所有UI开发的常规做法. 但是,大多数情况下,对于UI ...

  8. Android 布局管理器

    布局管理器:控制组件是如何摆放的. 5种常用的布局管理器: RelativeLayout,相对布局管理器 LineraLayout,线性 FrameLayout,帧 TableLayout,表格 Gr ...

  9. Java中BorderLayout布局管理器的两种排列实现方式

    java中Frame类默认的布局管理器为BorderLayout,其主要是将Frame窗口分为东西南北中五个区域,每个区域仅限于放一个组件,如加入多个,前免得会被覆盖,解决方法为:可以在一个区域中加入 ...

最新文章

  1. 这个能快速发表Cell,Nature,Molecular cell的分析技术你要错过吗?
  2. vue+webpack+amazeui项目小记
  3. vba oracle 01019,Oracle 客户端连接时报ORA-01019错误总结
  4. word编辑论文技巧
  5. python @classmethod 和 @staticmethod区别,以及类中方法参数cls和self的区别
  6. 【Java文件下载】如何让浏览器直接下载后端返回的图片,而不是直接打开
  7. 《见字如面》赏析-待续
  8. Mysql 零距离-入门(五)操作数据表
  9. 解决Scrapy使用pipline保存到数据库后返回None
  10. SAP License:ERP的意义
  11. SpringMvc-@ExceptionHandler
  12. bzoj 1295: [SCOI2009]最长距离(SPFA)
  13. webservice系列1---基于web工程上写一个基本数据类型的webservice
  14. 薛家德(帮别人名字作诗)
  15. 爬虫日记(71):用OCR来对抗字体反爬
  16. 选择电子名片的优势及电子名片适用的行业,你知多少?
  17. CSS实现单行、多行文本溢出显示省略号(…)
  18. 勤于奋:国外LEAD跟联盟经理沟通聊天软件,Skype注册教程
  19. 怎么打开和修改dll文件的?如何调用和编辑?
  20. vendor分区的库无法调用system分区的库

热门文章

  1. 【python】 求数组最小值,最大值,最小偶数,最大奇数
  2. 乒乓普及套及廉价底板评测
  3. javaweb-青橙项目-5-80
  4. pythonsocket自定义协议_python-基于UDP通信的套接字,socketserver模块的使用-阿里云开发者社区...
  5. 关于我国计算机事业发展的描述,[说明]冯康的计算数学人生.doc
  6. 安卓国际化(多语言切换),支持小语种
  7. python copy函数用法_copy.copy()函数用法
  8. 手机游戏服务端怎么找到_抖音游戏直播怎么开启?如何把手机或者电脑投屏到抖音直播?...
  9. igs无法分配驱动器映射表_项目超过255个摄像机怎么分配IP地址
  10. 使用ESP8266配合0.96寸OLED显示AIDA64读取到的电脑状态信息