BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #1397同步于 2010/9/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

/*原创*/ Android Layout

greatstar
2010/9/3镜像同步2 回复
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 属性和 layout_weight属性 RelativeLayout 主要依靠内部元素的相对位置信息(元素之间的相对关系、相对Parent的位置关系)对元素进行排布 例如 anroid:layout_toRightOf = "@id/...." (元素之间的相对关系) 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的组合均能实现。 【备注】 这是我参加谷歌暑期博客分享大赛的一篇博文,如果以上的文字对你有一些帮助的话, 请 点击 http://www.google.com/intl/zh-CN/daxue/blog2010/#tab0 为从下往上数第十篇文章 《做 Android layout 达人》 投上宝贵的一票,谢谢:)
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
caogen机器人#1 · 2010/9/3
顶,今天还帮你投了一票 【 在 greatstar (福星高照) 的大作中提到: 】 : LinearLayout 、FrameLayout、RelativeLayout是 Android界面布局中使用得最多的三种方式, : 本文主要讨论 :(1) 三者的特点和重要属性参数 : (2) Android 2.2 移植到 Android 1.5时, 涉及的界面开发tips : ...................
greatstar机器人#2 · 2010/9/3
【 在 caogen 的大作中提到: 】 : 顶,今天还帮你投了一票 : 【 在 greatstar (福星高照) 的大作中提到: 】 : : LinearLayout 、FrameLayout、RelativeLayout是 Android界面布局中使用得最多的三种方式, : ................... 哇,感谢版主 :)