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开发之路(一)页面布局的更多相关文章

  1. android初级应用到高端架构教程------ 完整体系化学习android开发

    系统的学习android开发技术,从应用到底层,再到架构,告别乱糟糟的学习方式,不再是抓不住重点.从上到下贯通,全面学习android开发.让你拥有清晰的思路,一步步学习android开发! 一般而言 ...

  2. 想学习Android开发

    最近被别人说知识面窄,心里受伤了.准备学学Android开发,如果能在手机里运行自己写的app,那是多么high ~~~ Android开发需要看什么资料呢? 说明:本人一直从事windows下的C+ ...

  3. 跟Google学习Android开发-起始篇-构建你的第一个应用程序(4)

    说明:此系列教程翻译自Google Android开发者官网的Training教程,利用Chome浏览器的自动翻译功能作初译,然后在一些语句不顺或容易造成误解的地方作局部修正.方便英文不好的开发者查看 ...

  4. 【Android】纯代码创建页面布局(含异步加载图片)

    开发环境:macOS 10.12 + Android Studio 2.2,MinSDK Android 5.1 先看看总体效果 本示例是基于Fragment进行的,直接上代码: [界面结构] 在 F ...

  5. 新人学习Android开发遇到的小问题总结

    1. IDE搭建: 搭建android的IDE时,先注意是什么版本的系统,64/32位系统. 通常使用的是Eclipse for android,Android Studio由于还需要FQ,网速慢,所 ...

  6. 10个学习Android开发的网站推荐

    1. Android Developers 作为一个Android开发者,官网的资料当然不可错过,从设计,培训,指南,文档,都不应该错过,在以后的学习过程中慢慢理解体会. 2. Android Gui ...

  7. android开发------编写用户界面之线性布局

    一个好的应用程序离不开人性化的用户界面.在学习其他东西之前.理应先学习编写程序的布局(外观) 今天,我们就来学习android的UI布局----LinearLayout. LinearLayout,即 ...

  8. 10个很棒的学习Android 开发的网站(转)

    看到江湖旅人 写的<10个很棒的学习iOS开发的网站 - 简书>,所以就忍不住写Android 啦,也希望对大家有帮助.我推荐的网站,都是我在学习Android 开发过程中发现的好网站,给 ...

  9. [转]10个学习Android开发的网站推荐

    本文转自:http://blog.csdn.net/i_lovefish/article/details/43950893 1. Android Developers 作为一个Android开发者,官 ...

随机推荐

  1. Android APP性能测试笔记(二)

    (5)FPS   每秒传输帧数(Frames Per Second),每秒钟帧数愈多,所显示的动作就会愈流畅,标准的fps是60 帧数就是在1秒钟时间里传输的图片的量,也可以理解为图形处理器每秒钟能够 ...

  2. leetcode 344. Reverse String 、541. Reverse String II 、796. Rotate String

    344. Reverse String 最基础的旋转字符串 class Solution { public: void reverseString(vector<char>& s) ...

  3. Idea突然不停indexing的问题

    只要清理一下Idea的缓存和索引就可以了,在File-Invalidate Caches / Restart中,选择Invalidate and Restart,之后会重启Idea,然后就解决啦!

  4. gooderp安装

    在做ODOO的前提下需要PostgreSQL,  SO.... #!/bin/bashPID=`echo $$`echo -e "\033[35m该脚本只在CentOS 7.4.1708版本 ...

  5. [intoj#7]最短距离

    190227模拟 题目描述 给定一张 N 个点的有向图,点 i 到点 j 有一条长度为 i/gcd(i,j) 的边. 有个 Q 询问,每个询问包含两个数 x, y,求从点 x 出发到点 y 的最短距离 ...

  6. linux安装jdk1.8(rpm方式)

    在Oracle官网下载64位的jdk1.8版本 jdk1.8: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloa ...

  7. ESP8266开发综合篇第十四节(LUA)-8266作为TCP服务器,Android客户端连接,显示温湿度,控制继电器

    前几节先略过,我先补充上大部分人迫切的需求 编写Android TCP客户端  用Android Studio 先做一下界面 然后放一个输入对话框,因为没有显示出来这个控件.所以就手写 剩下的自己研究 ...

  8. Java多线程核心技术(六)线程组与线程异常

    本文应注重掌握如下知识点: 线程组的使用 如何切换线程状态 SimpleDataFormat 类与多线程的解决办法 如何处理线程的异常 1.线程的状态 线程对象在不同运行时期有不同的状态,状态信息就处 ...

  9. Web登录其实没那么简单

    1. 一个简单的HTML例子看看用户信息安全 标准的HTML语法中,支持在form表单中使用<input></input>标签来创建一个HTTP提交的属性,现代的WEB登录中, ...

  10. 《React Native 精解与实战》书籍连载「React 与 React Native 简介」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...