Android线性布局(Linear Layout)

LinearLayout是一个view组(view group),其包含的所有子view都以一个方向排列,垂直或是水平方向。我们能够用android:orientation属性来指定布局的方向。

图1

LinearLayout中所有的子view依次排列,所以垂直列表的每一行只有一个子view,而不管行有多宽。水平列表只有一个行高(行高由最高子view的高度+padding(填充)来决定)。LinearLayout关注子view之间的margins(边缘)和每个子view的gravity(对齐方式,右、中间或是左对齐)。

LinearLayout也支持用android:layout_weight属性为单个子view指定权重(weight)。这个属性为一个view指定一个非常重要的值,此值指定了该view需要占用屏幕上多大的空间。一个更大的权重值运行子view扩展到填充满其父view的剩余空间。子view能够指定权重值,然后view组中的剩余空间会按照声明的权重所占的比例来分配。默认的权重是0。

比如,如果有文本框(text field),其中两个声明权重为1,另一个没有指定权重(默认值为0)的文本框不会扩展,它只会占据它的内容所需要的区域。在所有这个三个文本框被测量后,其他两个文本框将平分剩余的空间。如果第3个文本框权重值为2,它就申明了自己比其他的文本框更重要,它占用了剩余空间的一半,另一半由那两个文本框平分。示例代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical">
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to"/>
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/subject"/>
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message"/>
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="@string/send"/>
</LinearLayout>

还需要在LinearLayout\res\values\strings.XML文件中增加这些字符串的定义

<stringname="to">To</string>

<stringname="subject">Subject</string>

<stringname="message">Message</string>

<stringname="send">Send</string>

Activity中布局的效果如下图:

图2

为了更好去理解权重的意义,我们做一些修改,先来看下面一组权重值的效果:

(1)  To=subject=0(权重),message=2,显示如下:

图3

由于to和subject编辑框的属性android:layout_height="wrap_content"表示它们要求其高度可以包住内容,而且android:layout_weight="0"(或者是不用这个属性),0表示需要显示多大的视图就占据多大的屏幕空间,所以to和subjec编辑框就只占用能包住它们内容的屏幕空间就可以了。那message编辑框的权重只要不是为0,那么它就占用除去to和subject编辑框占用的空间之外的空间。

(2)  To=subject=1(权重),message=2,显示如下:

图4

虽然to和subject编辑框的属性android:layout_height="wrap_content",但因为它们的权重值为1(非零),则参与父view可用空间的分割,分割大小具体取决于每一个视图的layout_weight值以及该值在当前屏幕布局的整体 layout_weight值和在其它视图屏幕布局的layout_weight值中所占的比率而定,比如这里to和subject的权重值都为1,而message的为2,那么to和subject这两个view分别占用整个屏幕可用空间的1/4,而message占用2/4。

如果需要所有的子view大小一样,每个view的android:layout_height设置为0dp(对于垂直布局),或是每个view的android:layout_width设置为0dp(对于水平布局) ,然后设置每个view的android:layout_weight为1.

Android开发者Linear Layouts

http://developer.android.com/guide/topics/ui/layout/linear.html

Android布局---线性布局(Linear Layout)---别人翻译

http://www.2cto.com/kf/201301/183527.html

线性布局(Linear Layout)---理解应用

http://hi.baidu.com/justtmiss/item/a5b59909c688a6e4ff240dac

http://kb.cnblogs.com/page/73497/

Android线性布局(Linear Layout)相关推荐

  1. android线性布局控制间隙,Android线性布局(Linear Layout)

    Android 中常用布局 [1] 线性布局 [2] 相对布局 [3] 帧布局  -- FrameLayout [4] 表格布局 -- !!!一个 tabrow 就代表一行 [5] 绝对布局   -- ...

  2. Android表格布局(Table Layout)

    Android表格布局(Table Layout) 先来看布局管理器之间继承关系图: 图1 可知TableLayout继承了LinearLayout,所以表格布局本质上依然是线性管理器. 表格布局采用 ...

  3. Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分

    Android 线性布局(LinearLayout)相关官方文档 - 布局參数部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商 ...

  4. Android帧布局(Frame Layout)

    Android帧布局(Frame Layout) FrameLayout是最简单的一个布局管理器.FrameLayout为每个加入其中的组件创建一个空白区域(一帧),这些组件根据layout_grav ...

  5. android 切换排列,在运行时重新排序android线性布局?

    我有一个水平线性布局作为我的布局文件中的根元素.线性布局包含两个相对布局,每个布局都有几个子元素.我怎样才能交换这两个相对布局的位置?在运行时重新排序android线性布局? 我试图 ViewGrou ...

  6. android线性布局快捷键,【整理】Android图形界面知识学习与总结之:Linear Layout线性布局...

    [背景] 之前已经学习了: 现在接着去学习: 整理如下: Linear Layout 1.LinearLayout是一个视图组合 2.LinearLayout中的子视图只能已单个方向排列,要么是水平, ...

  7. android layout组件,Android UI学习 - Linear Layout, RelativeLayout

    1.一些常用的公共属性介绍 1) layout_width -宽 fill_parent: 宽度和父元素相同,wrap_content: 宽度随本身的内容所调整,或者指定 px值来设置宽 2) lay ...

  8. Android UI学习 - Linear Layout, RelativeLayout

    1. 一些常用的公共属性介绍 1) layout_width - 宽 fill_parent: 宽度和父元素相同,wrap_content: 宽度随本身的内容所调整,或者指定 px 值来设置宽 2) ...

  9. android 线性布局蒙层,Android开发 - 掌握ConstraintLayout(一)传统布局的问题

    在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面.随着 ...

最新文章

  1. [转]ESP8266使用详解
  2. java 中美时间_求教用java编写一个程序要求给定一个日期值,计算若干天后的日期值,和给定两个日期计算它们之间相距的天...
  3. 09 Softmax 回归 + 损失函数 + 图片分类数据集【动手学深度学习v2】
  4. [css] font-style的属性有Italic和oblique,两者有什么区别呢
  5. 【C++深度剖析教程18】逗号操作符的分析
  6. 市场观察人士:有充足代工产能支持 联发科3月份营收有望创下新高
  7. IOS开发人员必看的精品资料100
  8. C语言中可变参数的宏 __VA_ARGS__
  9. Java:日期类Date与Calendar
  10. 离线地图开发之标注柱状图特效(源代码)
  11. 绿坝老板不诚实,蒙骗政府官员
  12. JAVA入门教程-专题视频课程
  13. 【渝粤题库】陕西师范大学 《道德教育案例研究》作业
  14. Python实验-小黑屋
  15. 基础知识(HTML + CSS)整理
  16. 数据库:常用数据库的创建
  17. RFID技术在服装领域的具体应用
  18. 复旦大学计算机导师评价与简介
  19. 祖传Python代码
  20. Java基础之Java8 新特性

热门文章

  1. android下拉刷新动画效果代码_vue项目实录:下拉刷新组件的开发及slot的使用
  2. java里的局部变量为什么不能加static?
  3. 果园种树java_Java版淘金果园系统
  4. Nginx虚拟主机、Nginx模块的安装使用(加密模块--with-http_ssl_module)
  5. java中super关键字_Java中关键字super与this的区别
  6. python response.json()报错_python:解析requests返回的response(json格式)说明
  7. mysql5.5.20安装图解_mysql5.5.20的安装步骤
  8. wpf 放大缩小界面_调整电脑屏幕文本文字显示大小,系统设置放大缩小DPI图文教程...
  9. c++ 优先队列_什么是队列?(Python队列)
  10. java一句话木马连接_webshell一句话木马大全