您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > Android

Android开发之常用布局全在这篇

时间:2019-10-10 16:19:25  来源:  作者:
Android开发之常用布局全在这篇

 

一、简介

如下图所示,按照界面编写的方式,可以分为传统布局和新型布局两种。

Android开发之常用布局全在这篇

 

1.线性布局:是平常练习demo时最常用的布局,分为水平、垂直方向两种线性布局,即设置其属性orientation:"vertical或horizontal"。【注:在不指定方向时,默认为horizontal,即水平方向】

2.相对布局:依据某一控件的位置,来确定另一控件的位置,即另一控件相对于当前控件的位置。

3.表格布局:适用于多行多列的布局方式,通过表格方式来布局控件的位置,并且每个TableLayout由多个TableRow(表示行)组成。

4.网格布局:是在Android4.0之后引入的一个新布局,和上面的TableLayout有点类似,但GridLayout比TableLayout更加好用、灵活。

5.帧布局:放入的所有控件都会被依次放在左上区域,因此下一个控件会重叠覆盖上一个控件,且无法为控件指定一个确切的位置。一般用于浏览单张图片。

6.绝对布局:这个布局一般不会使用。屏幕的左上角为原点(0,0),横轴为x轴且向右为递增,纵轴为y轴且向下为递增,依据layout_x及layout_y属性分别设置控件的X及Y坐标。

7.约束布局:先说一下约束布局相对于传统布局的优势:①采用可视化的界面,拖拽控件即可完成界面的布局;②解决布局嵌套过多的问题,采用约束的方式来指定各个控件的位置和关系的,它有点类似于RelativeLayout,但远比RelativeLayout要更强大。

Android开发之常用布局全在这篇

 

二、常用属性

2.1 所有布局的公有属性

Android开发之常用布局全在这篇

 

2.2 各个布局的特有属性

  • 线性布局
Android开发之常用布局全在这篇

 

  • 在不指定线性布局方向的情况下,默认采用水平布局。
  • 为了完全按比例分配剩余空间,我们一般将控件的layout_width或layout_height设置为0dp,然后分别设置其权重值。【这里仅考虑常用的,至于宽设置为wrap_content或match_parent请自行尝试即可】

例:水平方向上有3个TextView,设置权重为1:1:1,则代码如下:

Android开发之常用布局全在这篇

 

运行结果如下:

Android开发之常用布局全在这篇

 

将权重比例改为1:2:3,运行结果如下。

Android开发之常用布局全在这篇

 

  • 相对布局
Android开发之常用布局全在这篇

 

  • 表格布局
Android开发之常用布局全在这篇

 

例:xml布局代码如下:

Android开发之常用布局全在这篇

 


Android开发之常用布局全在这篇

 

运行结果如下:

Android开发之常用布局全在这篇

 

由上面的演示可以看出:

  1. 如果直接在TableLayout中添加控件,则该控件将占满一行,如第一行的文本框独占一行。
  2. 若要在一行上放置多个控件,则需要在控件的外层添加一个TableRow容器,如第2、3、4、5行放置了不同个数的的按钮。
  3. TableRow容器中控件的个数决定了该行有多少列(如图分别有1,3,2,1,2列),而TableLayout的列数由控件最多的TableRow决定(整个布局有3列)。
  4. TableLayout的列的宽度由该列中最宽的单元格决定,如Button44444按钮决定了第二列的宽度。
  5. 设置layout_column属性,这里是跳过第1列,从第2列开始放置控件。
  6. 设置layout_span属性,这里是合并3个单元格,即该按钮占3个单元格。


请依次添加添加以下布局属性:

① 收缩1、2列:

android:shrinkColumns="0,1"

运行结果如下:显示不完全的button8显示完全了,并且Button1、Button44444、Button6按钮有收缩

Android开发之常用布局全在这篇

 

②隐藏第1列:

android:collapseColumns="0"

运行结果如下:由于第4行仅有一个按钮,则整个第四行隐藏。

Android开发之常用布局全在这篇

 

③ 伸展第3列:

android:stretchColumns="2"

运行结果如下:由于仅有第2、3行有第三列,并且Button3与B5有拉伸。

Android开发之常用布局全在这篇

 

  • 网格布局

GridLayout相关属性如下:

Android开发之常用布局全在这篇

 

  • 帧布局
  • 帧布局是这几种布局中最简单的布局,添加到其中的控件默认会放到布局区域的左上角;
  • 帧布局没有任何的定位方式,后一个控件会覆盖前一个控件;
  • 帧布局的大小有控件中最大的控件决定;

注:设置前景图像的位置可以两个属性叠加,例如右下角:bottom|right。

Android开发之常用布局全在这篇

 

  • 绝对布局

绝对布局很少使用,一般有两个常用控件属性:

Android开发之常用布局全在这篇

 

  • 约束布局

约束布局是google推荐的一种布局,有关于其拖拽控件、添加约束、借助Inspector设置属性、Gidelines的使用以及自动添加约束的功能

最后

如果你看到了这里,觉得文章写得不错就给个赞呗!欢迎大家评论讨论!如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足,定期免费分享技术干货。感兴趣的小伙伴可以点一下关注哦。谢谢!



Tags:Android   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 java heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存...【详细内容】
2021-12-23  Tags: Android  点击:(8)  评论:(0)  加入收藏
Android logcat日志封装logcat痛点在Android开发中使用logcat非常频繁,logcat能帮我们定位问题,但是在日常使用中发现每次使用都需要传递tag,并且会遇到输出频率很高的log,在多...【详细内容】
2021-12-22  Tags: Android  点击:(8)  评论:(0)  加入收藏
对项目的基本介绍 1.整个框架主要是给MVVM框架使用的,自己写完interface接口后,通过自定义的注解就能自动生成接口方法 2.用Kotlin的Flow去代替Rxjava,因为我发现RxJava功能很...【详细内容】
2021-12-08  Tags: Android  点击:(17)  评论:(0)  加入收藏
前言在Android开发过程中,有些时候会根据需要引用别的项目到当前项目里面,而且以Module形式引用。所以本篇博文就来分享一下怎么以Module形式引用别的项目到当前项目中,方便开...【详细内容】
2021-12-07  Tags: Android  点击:(22)  评论:(0)  加入收藏
新型Android恶意木马程序伪装成数十款街机、射击和策略游戏,通过华为应用市场AppGallery进行分发,从而窃取设备信息和用户的手机号码,全球目前至少有930万台Android设备被该恶...【详细内容】
2021-12-01  Tags: Android  点击:(24)  评论:(0)  加入收藏
作者:fundroid这篇文章偏阅读一些,大家可以了解下 Android 的一些最新动向。每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分...【详细内容】
2021-11-30  Tags: Android  点击:(15)  评论:(0)  加入收藏
一、 准备工作1、安装JDK,下载地址(可能需要一个oracle账号,大家百度一下或者自行注册一个就行。尽可能选择8或者11,这两个是长期版本)Java SE | Oracle Technology Network | Or...【详细内容】
2021-11-23  Tags: Android  点击:(28)  评论:(0)  加入收藏
如果你是一名忠实的Android玩家,那么可能会知道,今年的Android 12系统在版本规划上与“往届”相比可以说是很有些特殊。具体来说,除了前段时间刚刚推出正式版的Android 12外,谷...【详细内容】
2021-11-10  Tags: Android  点击:(24)  评论:(0)  加入收藏
使用Maven Publish Plugin插件。(官方支持)一、在Library的build.gradle中配置plugins { id 'com.android.library' id 'kotlin-android' id 'k...【详细内容】
2021-11-05  Tags: Android  点击:(37)  评论:(0)  加入收藏
今年5月,谷歌推出了Android 12,这是原生安卓系统史上最大的设计变化,10月4日,谷歌推出全新的Android12正式版本,并且宣布会在今年晚些时候应用于安卓设备,对比Android11的挤牙膏式...【详细内容】
2021-10-29  Tags: Android  点击:(125)  评论:(0)  加入收藏
▌简易百科推荐
今天面试遇到同学说做过内存优化,于是我一般都会问那 Bitmap 的像素内存存在哪?大多数同学都回答在 java heap 里面,就比较尴尬,理论上你做内存优化,如果连图片这个内存大户内存...【详细内容】
2021-12-23  像程序那样思考    Tags:Android开发   点击:(8)  评论:(0)  加入收藏
Android logcat日志封装logcat痛点在Android开发中使用logcat非常频繁,logcat能帮我们定位问题,但是在日常使用中发现每次使用都需要传递tag,并且会遇到输出频率很高的log,在多...【详细内容】
2021-12-22  YuCoding    Tags:Android   点击:(8)  评论:(0)  加入收藏
对项目的基本介绍 1.整个框架主要是给MVVM框架使用的,自己写完interface接口后,通过自定义的注解就能自动生成接口方法 2.用Kotlin的Flow去代替Rxjava,因为我发现RxJava功能很...【详细内容】
2021-12-08  网易Leo    Tags:Android开发   点击:(17)  评论:(0)  加入收藏
前言在Android开发过程中,有些时候会根据需要引用别的项目到当前项目里面,而且以Module形式引用。所以本篇博文就来分享一下怎么以Module形式引用别的项目到当前项目中,方便开...【详细内容】
2021-12-07  网易Leo    Tags:Android开发   点击:(22)  评论:(0)  加入收藏
作者:fundroid这篇文章偏阅读一些,大家可以了解下 Android 的一些最新动向。每年9/10月份 Google 都会举行约为期2天的 Android Dev Summit,在活动上 Google 的技术专家们会分...【详细内容】
2021-11-30  像程序那样思考    Tags:Android开发   点击:(15)  评论:(0)  加入收藏
一、 准备工作1、安装JDK,下载地址(可能需要一个oracle账号,大家百度一下或者自行注册一个就行。尽可能选择8或者11,这两个是长期版本)Java SE | Oracle Technology Network | Or...【详细内容】
2021-11-23  永沧    Tags:Android   点击:(28)  评论:(0)  加入收藏
使用Maven Publish Plugin插件。(官方支持)一、在Library的build.gradle中配置plugins { id 'com.android.library' id 'kotlin-android' id 'k...【详细内容】
2021-11-05  羊城小阳    Tags:Android   点击:(37)  评论:(0)  加入收藏
谷歌离推出Play Store应用程序的新数据隐私部分又近了一步。应用程序开发人员现在可以通过谷歌在Play控制台的新 "数据安全表 "填写相关细节。该公司表示,所需信息将从2022年...【详细内容】
2021-10-20    中关村在线  Tags:安卓   点击:(58)  评论:(0)  加入收藏
架构究竟是什么?如何更好的理解架构?我们知道一个APP通常是由class组成,而这些class之间如何组合,相互之间又如何产生作用,就是影响这个APP的关键点。细分的话我们可以将其分为类...【详细内容】
2021-09-17  像程序那样思考    Tags:Android架构   点击:(52)  评论:(0)  加入收藏
概述当Android应用程序需要访问设备上的敏感资源时,应用程序开发人员会使用权限模型。虽然该模型使用起来非常简单,但开发人员在使用权限时容易出错,从而导致安全漏洞。本文中,...【详细内容】
2021-09-07  SecTr安全团队    Tags:Android开发   点击:(66)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条