学习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开发者,官 ...
随机推荐
- 1、话说linux内核
1.内核和发行版的区别 到底什么是操作系统 linux.windows.android.ucos就是操作系统 操作系统本质上是一个程序,由很多个源文件构成,需要编译连接成操作系统程序(vmlinz.z ...
- LOJ2527 HAOI2018 染色 容斥、生成函数、多项式求逆
传送门 调了1h竟然是因为1004535809写成了998244353 "恰好有\(K\)种颜色出现了\(S\)次"的限制似乎并不容易达到,考虑容斥计算. 令\(c_j\)表示强制 ...
- java 基础 instance of
a instance of b a是否是b类的实例对象 返回 bool值
- vue项目使用echarts按需引入实现地图动态显示效果时,报错:TypeError: Cannot read property 'dataToPoint' of undefined
vue项目使用echarts按需引入实现地图动态显示效果时,报错:TypeError: Cannot read property 'dataToPoint' of undefined 借鉴了该大神的文 ...
- [翻译] ASP.NET Core 利用 Docker、ElasticSearch、Kibana 来记录日志
原文: Logging with ElasticSearch, Kibana, ASP.NET Core and Docker 一步一步指导您使用 ElasticSearch, Kibana, ASP ...
- Django ORM模型:想说爱你不容易
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...
- H5 19-序选择器下
19-序选择器下 我是项目 我是项目 我是项目 我是项目 我是项目 我是项目 我是项目 <!DOCTYPE html> <html lang="en"> & ...
- python全栈开发慕课网
前端 web框架: flask:简单.轻量.灵活性大 (官网,stck overflowa); 目录结构:配置,发布,资源,日志,测试... 前后端协作:整体发布,前后端分离发布 django:简单, ...
- Summer sell-off CodeForces - 810B (排序后贪心)
Summer holidays! Someone is going on trips, someone is visiting grandparents, but someone is trying ...
- Ajax中文乱码的解决
网上有很多解决Ajax中文乱码的例子,昨晚弄了很久,最终确定一种“确实”有效地方法.首先我有必要说明一下我遇到的情况:有一个注册页面,注册用户填完信息并提交后,页面获得信息并通过java servle ...