学习android开发之路(一)页面布局
Android页面布局
1.Android页面布局一共分为6种:
LinearLayout(线性布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)、GridLayout(网格布局)、AbsoluteLayout(绝对布局)
常用的为:线性布局和相对布局
2.布局的特点
FrameLayout帧布局
- 布局特点:放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确切的位置,下一个子元素会重叠覆盖上一个子元素
- 应用场景:适合浏览单张图片。
LinearLayout线性布局
- 布局特点:放主要提供控件水平或者垂直排列的模型,每个子组件
都是以垂直或水平的方式来线性排布.(默认是垂直) - 应用场景:最常用的布局方式
linearLayout中有一个重要的属性 android:layout_weight=”1”,这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。
AbsoluteLayout绝对定位布局
- 布局特点:采用坐标轴的方式定位组件,左上角是(0,0)点,往右x轴递增,往下Y轴递增,组件定位属性为android:layout_x和 android:layout_y来确定坐标。
- 应用场景:准确定位空间位置
由于Android手机的屏幕尺寸、分辨率存在较大差异,使用AbsoluteLayout无法兼顾适配问题,所以该布局已经过时
RelativeLayout相对布局
- 布局特点:为某一个组件为参照物,来定位下一个组件的位置的布局方式。
- 应用场景:控件之间存在相应关系(适配神器,推荐使用)
TableLayout表格布局
- 布局特点:类似Html里的Table.使用TableRow来布局,其中TableRow代表一行,TableRow的每一个视图组件代表一个单元格。
- 应用场景:控件之间存在相应关系。
这五个布局元素可以相互嵌套应用,做出美观的界面。
3.布局的常用属性
- layout_width & layout_height { xxxpd,wrap_content,match_parent,}
- layout_margin+方位 & padding+方位
- layout_gravity & gravity
wrap_content:相应视图的宽和高就会被设定成所需的最小尺寸以适应视图中的内容
match_parent:视图的宽和高延伸至充满整个父布局
margin和padding区别:margin外边距,padding内边距和html用法一样
layout_gravity 和 gravity:用来确定View在Layout中的停靠位置
layout_gravity 和 gravity区别:
gravity属性:是对该view 内容的位置的设置。 比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置
layout_gravity 属性:是用来设置该view相对与父view 的位置。 比如一个button 在Linearlayout里,你可以通过设置该属性把该button放在父布局Linearlayout靠左靠右等位置。
====================================================================================================================================
LinearLayout
orientation:vertical(垂直排列)/horizontal(水平排列)
layout_weight :是线性布局(Linelayout)的一个独特比例分配属性。使用此属性设置权重,然后按照比例对界面进行空间的分配,公式计算是:控件宽度=控件设置宽度+剩余空间所占百分比宽幅
RelativeLayout
a. 相对于父空间
XML属性 | 说明 |
---|---|
layout_alignParentBottom | 当前控件底端与父控件的底端对齐 |
layout_alignParentLeft | 当前控件左端与父控件的左端对齐 |
layout_alignParentRight | 当前控件右端与父控件的右端对齐 |
layout_alignParentTop | 当前控件上端与父控件的上端对齐 |
layout_centerHorizontal | 当前控件位于父控件的横向中间位置(水平方向上的中间) |
layout_centerVertical | 当前控件位于父控件的纵向中间位置(平面上的正中间) |
layout_centerInParent | 当前控件位于父控件的纵横向中间位置(垂直方向上的中间) |
上述所有属性的取值皆为boolean属性:true、false。
b. 相对于给定控件
XML属性 | 说明 |
---|---|
layout_above | 使当前控件位于给出id控件的上方 |
layout_below | 使当前控件位于给出id控件的下方 |
layout_toLeftOf | 使当前控件位于给出id控件的左侧 |
layout_toRightOf | 使当前控件位于给出id控件的右侧 |
layout_alignBottom | 使当前控件与给出id控件的底部部重合 |
layout_alignLeft | 使当前控件与给出id控件的左边重合 |
layout_alignRight | 使当前控件与给出id控件的右边重合 |
layout_alignTop | 使当前控件与给出id控件的顶部重合 |
layout_alignBaseline | 使当前控件的BaseLine与给出id控件t的BaseLine重合 |
上述所有属性的取值皆为给定控件的id名,如下例子
//文本控件@+id/tab_textview在控件@+id/tab_imageview的下方
<TextView
android:id="@+id/tab_textview"
android:layout_below="@+id/tab_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
学习android开发之路(一)页面布局的更多相关文章
- android初级应用到高端架构教程------ 完整体系化学习android开发
系统的学习android开发技术,从应用到底层,再到架构,告别乱糟糟的学习方式,不再是抓不住重点.从上到下贯通,全面学习android开发.让你拥有清晰的思路,一步步学习android开发! 一般而言 ...
- 想学习Android开发
最近被别人说知识面窄,心里受伤了.准备学学Android开发,如果能在手机里运行自己写的app,那是多么high ~~~ Android开发需要看什么资料呢? 说明:本人一直从事windows下的C+ ...
- 跟Google学习Android开发-起始篇-构建你的第一个应用程序(4)
说明:此系列教程翻译自Google Android开发者官网的Training教程,利用Chome浏览器的自动翻译功能作初译,然后在一些语句不顺或容易造成误解的地方作局部修正.方便英文不好的开发者查看 ...
- 【Android】纯代码创建页面布局(含异步加载图片)
开发环境:macOS 10.12 + Android Studio 2.2,MinSDK Android 5.1 先看看总体效果 本示例是基于Fragment进行的,直接上代码: [界面结构] 在 F ...
- 新人学习Android开发遇到的小问题总结
1. IDE搭建: 搭建android的IDE时,先注意是什么版本的系统,64/32位系统. 通常使用的是Eclipse for android,Android Studio由于还需要FQ,网速慢,所 ...
- 10个学习Android开发的网站推荐
1. Android Developers 作为一个Android开发者,官网的资料当然不可错过,从设计,培训,指南,文档,都不应该错过,在以后的学习过程中慢慢理解体会. 2. Android Gui ...
- android开发------编写用户界面之线性布局
一个好的应用程序离不开人性化的用户界面.在学习其他东西之前.理应先学习编写程序的布局(外观) 今天,我们就来学习android的UI布局----LinearLayout. LinearLayout,即 ...
- 10个很棒的学习Android 开发的网站(转)
看到江湖旅人 写的<10个很棒的学习iOS开发的网站 - 简书>,所以就忍不住写Android 啦,也希望对大家有帮助.我推荐的网站,都是我在学习Android 开发过程中发现的好网站,给 ...
- [转]10个学习Android开发的网站推荐
本文转自:http://blog.csdn.net/i_lovefish/article/details/43950893 1. Android Developers 作为一个Android开发者,官 ...
随机推荐
- GDB 命令回顾
0) 为使用 GDB, 编译时需要加入调试信息 -g 选项,例如, $ gcc -g test.c -o test 1) 使用 GDB 开始调试 $ gdb test 也可以, $ gdb $ fil ...
- Flask框架简介,常用扩展包及两大核心
Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其他几乎所有的功能都 ...
- pycharm2018.3版 永久激活
pycharm2018.3版 永久激活 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10258257.html 激活前准备工作 ...
- Git-命令行-使用 Tag 标记你的代码
前言 正文开始之前,我想我们需要弄明白几个问题: 1.tag 是什么? 2.使用tag 的好处? 3.tag 和 branch 的区别以及使用场景? tag 是什么? tag , 翻译过来是标签的意思 ...
- A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)
这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方便: <script src="A2D.js" type=&qu ...
- nginx 之 proxy_redirect详解
proxy_redirect 语法:proxy_redirect [ default|off|redirect replacement ] 默认值:proxy_redirect default 使 ...
- H5 video标签的第二种格式
36-video标签的第二种格式 2.第二种格式存在的意义: 由于视频数据非常非常的重要, 所以五大浏览器厂商都不愿意支持别人的视频格式, 所以导致了没有一种视频格式是所有浏览器都支持的 这个时候W3 ...
- Python学习第十篇——函数初步
def make_album(name,album_name,song_nums = 1): dict_album = {name:[album_name]} if int(song_nums) &g ...
- DevOps工程师到底做些什么?
我们之前已经听到很多谈论DevOps和DevOps世界的最新趋势的事情,但是就DevOps工程师本身,到底干些什么呢? 在最纯粹的存在形式上来说,DevOps工程师是为了加快开发和运营团队之间的交付效 ...
- Mysql 索引问题集锦
一.Mysql 中的索引 索引:顾名思义用来检索.查找数据的key (字段) 几种Mysql 中的常见索引分类:普通索引(联合索引).唯一索引.主键索引.全文索引 优点:使得查询数据变快 缺点:更新数 ...