博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
做 Android layout 达人
阅读量:5174 次
发布时间:2019-06-13

本文共 2087 字,大约阅读时间需要 6 分钟。

LinearLayout 、FrameLayout、RelativeLayout是 Android界面布局中使用得最多的三种方式,

 

本文主要讨论 :(1) 三者的特点和重要属性参数 

                    (2) Android 2.2 移植到 Android 1.5时, 涉及的界面开发tips

 

Layout 属性总结和比较

 

FrameLayout  和 LinearLayout 的布局方式比较相似,

最大的区别在于 LinearLayout (线性布局)有一个  orientation 属性, 决定了Layout中元素在线性排布时的走向,该属性值分为 vertical horizontal 两种,分别将布局方向设为 竖直方向和 水平方向

界面元素会自动按照 orientation 所指定的方向依次排布。

FrameLayout 没有这一属性,整个Layout更像一块画布,Layout内元素依靠 layout_gravity 属性进行排布。

需要注意的是,LinearLayout orientation 属性会对 layout_gravity 产生影响,

当它的值是 vertical, layout_gravity 属性设置为 top bottom 无效(因为Layout内元素从上到下依次排布)

同理,当它的值是 horizontal, layout_gravity 属性 left right 属性值无效。

 

另外, LinearLayout FrameLayout 多了一个重要的属性 layout_weight ,通过指定各个元素的layout_weight,Layout内的各个元素会根据 layout_weight 的比值对空白区域进行填充,撑满某一行或某一列

 

RelativeLayout 和上述两种Layout的布局机制有所不同,

它没有layout_gravity、gravity 属性和 layout_weight属性

其内部的元素也无法设置 layout_gravity 属性和 layout_weight属性,

RelativeLayout 主要依靠内部元素的相对位置信息(元素之间的相对关系、相对Parent的位置关系)对元素进行排布

例如 anroid:    (元素之间的相对关系)

          android:layout_alignParentRight = "true"   (相对于Parent的位置)

          android:layout_centerInParent = "true"

另外,   

android:layout_centerVertical="true" , android:layout_centerHorizontal="true" 来代替 layout_gravity的相应属性

分别使一个View 元素在父容器中竖直居中 和 水平居中。 

 

以上三种 Layout 共有的重要属性

Padding 系列 ,paddingLeft  ,用于确定在一个view内部,留出的空白区域,

Margin 系列 ,layout_marginLeft ,用于确定一个view外部,和它的相邻元素之间留出的空白区域

layout_width layout_height ,设置布局中元素的宽和高,

一般设为以下两种值: fill_parent wrap_content,

fill_parent 填满parent中空白的区间, wrap_content 提供刚好能包裹内容的大小

 

 

Android 2.2 移植到 Android 1.5

   下面谈谈从Android 2.2(后文简称2.2) 到 Android1.5(后文简称1.5) 的移植中, 涉及的Layout布局问题。

   目前android 最新的版本是2.2 ,而市面上使用的手机有不少使用的是1.5版本,所以2.2下编写的应用不可避免地要移植到1.5,并完成测试。

   大家一定很奇怪,直接将 2.2 下编写的应用放在 1.5 下运行难道不可以?

   事实上,2.2下显示正常的界面布局在1.5下有可能发生变形走样的情况:

   主要原因有可能是以下两种:

   (1) 1.5下对Layout 嵌套层次有限制

   当Layout 嵌套层次过多时(超过15层这样一个数量级),会发生页面崩溃的情况。解决方法是尽量减少layout的嵌套层次,去掉不必要的嵌套Layout。

   (2) 1.5下对于RelativeLayout的支持并不好

   特别是对于嵌套于内层的RelativeLayout,在解析的过程中有可能出现异常,

   解决方法是,当出现这种情况时,用另外两种常用Layout的组合改写RelativeLayout,

   幸运的是:一般情况下,用RelativeLayout能实现的布局效果,用 FrameLayout 和 LinearLayout的组合均能实现。

 

 

转载于:https://www.cnblogs.com/greatstar/archive/2011/01/02/1924160.html

你可能感兴趣的文章
C#Windows的HelloWorld
查看>>
Xcode清除缓存、清理多余证书
查看>>
weblogic 优化设置 http://wenku.baidu.com/view/c42e7a5bbe23482fb4da4cf2.html
查看>>
.net 获取 虚拟目录名字
查看>>
BZOJ 入门OJ 2006: [Noip模拟题]七天使的通讯
查看>>
linux下使用g++编译cpp工程
查看>>
JAVA详细运行过程及与平台无关性
查看>>
jsonp跨域总结
查看>>
c#设计模式之观察者模式(Observer Pattern)
查看>>
数论——质数筛法
查看>>
创建sum求多元素的和
查看>>
onchange 、oninput 区别&remove、empty
查看>>
UILabel的常见用法
查看>>
用户线程和内核线程的区别
查看>>
Java异常超详细总结
查看>>
Core Data 编程指南
查看>>
Crash dump中需要重点关注的信息
查看>>
art.dialog
查看>>
html css float left与 float right的使用说明
查看>>
重载运算符
查看>>