文档章节

Android 常用布局

campanula
 campanula
发布于 2015/10/20 13:45
字数 1538
阅读 41
收藏 0
点赞 0
评论 0

Android的布局有:

LinearLayout             线性布局

RelativeLayout            相对布局

FrameLayout             单桢布局

TableLayout             表格布局

GridLayout             网格布局Android4.0

AbsoluteLayout     绝对布局不常用(淘汰)


LinearLayout线性布局:

LinearLayout是一种线型的布局方式。LinearLayout布局容器内的组件一个挨着一个地排列起来:不仅可以控制个组件横向排列,也可控制各组件纵向排列。通过orientation属性设置线性排列的方向是垂直(vertical)还是纵向(horizontal)。

RelativeLayout相对布局:

RelativeLayout是一种相对布局,控件的位置是按照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最常用,也是最灵活的一种布局。

相对布局常用属性介绍,这里将这些属性分成组,便于理解和记忆。

 

a)、第一类:属性值为true或false

android:layout_centerHrizontal         水平居中

android:layout_centerVertical         垂直居中

android:layout_centerInparent         相对于父元素完全居中

android:layout_alignParentBottom 贴紧父元素的下边缘

android:layout_alignParentLeft         贴紧父元素的左边缘

android:layout_alignParentRight         贴紧父元素的右边缘

android:layout_alignParentTop         贴紧父元素的上边缘

b)、第二类:属性值必须为id的引用名“@id/id-name”

android:layout_below             在某元素的下方

android:layout_above              在某元素的的上方

android:layout_toLeftOf             在某元素的左边

android:layout_toRightOf      在某元素的右边

android:layout_alignTop      本元素的上边缘和某元素的的上边缘对齐

android:layout_alignLeft              本元素的左边缘和某元素的的左边缘对齐

android:layout_alignBottom      本元素的下边缘和某元素的的下边缘对齐

android:layout_alignRight      本元素的右边缘和某元素的的右边缘对齐

c)、第三类:属性值为具体的像素值,如30dip,40px

android:layout_marginBottom 离某元素底边缘的距离

android:layout_marginLeft         离某元素左边缘的距离

android:layout_marginRight         离某元素右边缘的距离

android:layout_marginTop         离某元素上边缘的距离


FrameLayout单桢布局:

FrameLayout对象好比一块在屏幕上提前预定好的空白区域,可以将一些元素填充在里面,如图片。所有元素都被放置在FrameLayout区域的最左上区域,而且无法为这些元素制指定一个确切的位置,若有多个元素,那么后面的元素会重叠显示在前一个元素上。


TableLayout表格布局:

TableLayout是指将子元素的位置分配到行或列中。Android的一个TableLayout有许多TableRow组成,每一个 TableRow都会定义一个Row。TableLayout容器不会显示Row,Column,及Cell的边框线,每个Row拥有0个或多个 Cell,每个Cell拥有一个View对象。

表格布局常见属性介绍:

a)TableLayout行列数的确定:

TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或View控件),就有多少行。

TableLayout的列数等于含有最多子控件的TableRow的列数。

如第一TableRow含2个子控件,第二个TableRow含3个,第三个TableRow含4个,那么该TableLayout的列数为4。

b)TableLayout可设置的属性详解:

TableLayout可设置的属性包括全局属性及单元格属性。

Ø 全局属性也即列属性,有以下3个参数:

android:stretchColumns   设置可伸展的列该列可以向行方向伸展,最多可占据一整行

android:shrinkColumns    设置可收缩的列当该列子控件的内容太多,已经挤满所在行,那么该子控件的内容将往列方向显示

android:collapseColumns设置要隐藏的列

 

示例:

android:stretchColumns="0"         第0列可伸展

android:shrinkColumns="1,2"        第1,2列皆可收缩

android:collapseColumns="*"        隐藏所有行

说明:列可以同时具备stretchColumns及shrinkColumns属性,若此,那么当该列的内容N多时,将“多行”显示其内容。(这里不是真正的多行,而是系统根据需要自动调节该行的layout_height)

Ø 单元格属性,有以下2个参数:

android:layout_column    指定该单元格在第几列显示

android:layout_span       指定该单元格占据的列数(未指定时,为1)

示例:

android:layout_column="1"    该控件显示在第1列

android:layout_span="2"       该控件占据2列

说明:一个控件也可以同时具备这两个特性。


GridLayout网格布局:

android4.0以上版本出现的GridLayout布局解决了以上问题。GridLayout布局使用虚细线将

布局划分为行、列和单元格,也 支持一个控件在行、列上都有交错排列。而GridLayout使用的其实是跟LinearLayout类似的API,只不过是修改了一下相关的标签而已, 所以对于开发者来说,掌握GridLayout还是很容易的事情。GridLayout的布局策略简单分为以下三个部分:

首先它与LinearLayout布局一样,也分为水平和垂直两种方式,默认是水平布局,一个控件挨着一个控件从左到右依次排列,但是通过指定 android:columnCount设置列数的属性后,控件会自动换行进行排列。另一方面,对于GridLayout布局中的子控件,默认按照 wrap_content的方式设置其显示,这只需要在GridLayout布局中显式声明即可。

其次,若要指定某控件显示在固定的行或列,只需设置该子控件的android:layout_row和android:layout_column属性即 可,但是需要注意:android:layout_row=”0”表示从第一行开始,android:layout_column=”0”表示从第一列开 始,这与编程语言中一维数组的赋值情况类似。

最后,如果需要设置某控件跨越多行或多列,只需将该子控件的android:layout_rowSpan或者 layout_columnSpan属性设置为数值,再设置其layout_gravity属性为fill即可,前一个设置表明该控件跨越的行数或列数, 后一个设置表明该控件填满所跨越的整行或整列。

AbsoluteLayout绝对布局:

AbsoluteLayout绝对布局犹如div指定了absolute属性,用X,Y坐标来指定元素的位置!该布局目前已经淘汰!  


© 著作权归作者所有

共有 人打赏支持
campanula
粉丝 0
博文 1
码字总数 1538
作品 0
浦东
Android工程师
Android 布局详解 -一线性布局以及重要属性

Android 布局详解 Android 布局是开发中非常重要的一个知识部分,它的布局分为以下几种: Linear Layout:线性布局 Relative Layout:相对布局 Table Layout:表格布局 Grid View:网格布局 ...

-天蓬元帅-
2013/12/15
0
0
Android学习笔记(二) 布局方式的介绍

Android应用的开发的一项内容就是用户界面开发了。Android提供了大量功能丰富的UI组件。Android的界面是由布局和组件协同完成的。 Android所有UI组件都继承了View类,View类有一个重要的子类...

半夏alvin
2014/03/05
0
0
android XML布局和子View按比例布局

首先按照程序的目录结构大致分析:   res/layout/ 这个目录存放的就是布局用的xml文件,一般默认为main.xml   res/values/ 这个目录存放的是一堆常量的xml文件   res/drawable/ 存放的...

程序袁_绪龙
2014/09/09
0
0
Android ——TabHost使用

在Android中,通常可以使用切换卡(选项卡)实现切换显示不同页面内容的功能。这一功能可以通过TabHost控件来实现。   下面我们就通过一个简单的实例演示如何使用TabHost控件完成切换卡功能...

的书法上的
2014/08/05
0
0
第五讲:用户界面 View(一)

一、什么是View 我们上节课说,Activity是Android程序的显示层,每一个显示窗口都是一个Activity;可是Activity本身无法显示在屏幕上,我们可以把它理解成是一个抽象层,一个壳子;就譬如一个...

程序袁_绪龙
2014/08/25
0
0
tools:context =“activityname”布局文件中定activity的渲染上下文

第一步: 首先来看布局文件:activty_about.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:lay......

刘小米
2014/12/03
0
0
浅谈Android五大布局(二)——RelativeLayout和TableLayout

 在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局)、FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局RelativeLayout(相对布局)和Tab...

墨梅
2014/03/19
0
0
《老罗Android开发视频教程》老罗来交国庆的答卷了

  之前在博客园、开源中国、安卓巴士发表的《老罗将死,或者Android也将就换代,但是互联网的,共享,互助精神将永存》,计划出300集免费的、高质量的、全面的Android开发视频教程,得到了...

qixinghaitang
2012/10/09
0
2
Android Fragment 真正的完全解析(上)

分类: 【Android 源码解析】 【android 进阶之路】 2014-07-20 11:22 38131人阅读 评论(56) 收藏 举报 AndroidFragment 目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/art...

goover1001
2015/02/05
0
0
Android入门学习_代码常用布局

1、线性布局 LinearLayout: 线性布局是所有布局中最常用的类之一,也是RadioGroup, TabWidget, TableLayout, TableRow, ZoomControls类的父类。LinearLayout可以让它的子元素垂直或水平的方...

cathleencheng
2011/06/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
11分钟前
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
38分钟前
0
0
NetCat Tutorials

Hacking with Netcat part 1: The Basics Hacking with Netcat part 2: Bind and reverse shells Hacking with Netcat part 3: Advanced Techniques 10 Introduction to Netcat - pdf NetCat......

zungyiu
38分钟前
0
0
Android Studio+NDK+Cmake 移植FFmpeg-4.0.2命令行工具

一、编译 参考大神的帖子,亲测一次编译成功:https://blog.csdn.net/bobcat_kay/article/details/80889398 鉴于以前查文档的经验,这里附上编写例子的时间:2018年7月22日 我用的是ubantu,...

她叫我小渝
39分钟前
0
0
mysql创建数据库

登录MYSQL mysql -u root -p 脚本创建数据库WeChat,并制定默认的字符集是utf8mb4。 CREATE DATABASE Wechat DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 授权 grant all......

niithub
53分钟前
0
0
svn: Unable to connect to a repository URL 的解决方案

错误图示: 解决办法:清除本地保存的授权信息; 1:右键点击本地文件夹,选择设置; TortoiseSVN -> Settings 2:在弹出的对话框中选择 Saved Data, 右侧选择:授权地方清理所有。 然后点确...

宁哥实战课堂
今天
1
0
sleep与wait的区别

Thread.sleep(XXX)方法消耗CPU吗? 这个知识点是我之前认识一直有错误的一个知识点,在我以前的认识里面,我一直认为Thread.sleep(1000)的这一秒钟的时间内,线程的休眠是一直占用着CPU的时间...

码代码的小司机
今天
1
0
20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
今天
1
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
今天
1
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部