`
isiqi
  • 浏览: 16002768 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

android线性布局参数详解

阅读更多

线性布局中,有 4 个及其重要的参数,直接决定元素的布局和位置,这四个参数是

android:layout_gravity ( 是本元素相对于父元素的重力方向 )

android:gravity (是本元素所有子元素的重力方向)

android:orientation (线性布局以列或行来显示内部子元素)

android:layout_weight (线性布局内子元素对未占用空间【水平或垂直】分配权重值,其值越小,权重越大

前提是子元素 设置了 android:layout_width = "fill_parent" 属性(水平方向)

android:layout_height = "fill_parent" 属性(垂直方向)

fill_parent 就是让控件宽或者高占全屏,而wrap_content是让控件的高或宽仅仅把控件里的内容包裹住,而不是全屏,你自己动手试试就知道了,很直观

如果某个子元素的 android:layout_width = "wrap_content"

android:layout_height =" wrap_content”

android:layout_weight 的设置值 对该方向上空间的分配刚好相反。

下面以一个简单例子来说明 4个参数

<? xml version = "1.0" encoding = "utf-8" ?>

< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

android:layout_height = "200dp"

android:layout_width = "200dp"

android:background = "#AABBCC"

android:orientation= "horizontal"

android:layout_gravity= "center" >

< TextView android:text = "ONE"

android:background = "#aa0000"

android:layout_height = "wrap_content"

android:layout_width = "wrap_content"

android:layout_margin = "1dp" />

< TextView android:text = "TWO"

android:background = "#aa0000"

android:layout_height = "wrap_content"

android:layout_width = "wrap_content"

android:layout_margin = "1dp" />

</ LinearLayout >

说明:在上面的例子中,根布局是LinearLayout, 其包含有2TextView 视图,为了对参数 android:layout_gravity 有直观的了解,对根布局 LinearLayout 特意加了 3 个参数

android:layout_height = "200dp"

android:layout_width = "200dp"

android:background = "#AABBCC"

为布局指定了固定的宽度和高度,以及背景颜色,上面的例子运行后效果如下图:

说明:对LinearLayout 中的参数android:layout_gravity 来说,其意义是指定本布局相对于父布局的重力方向,由于该布局的已经是根布局,其父布局是整个屏幕,那么该参数设置的是相对于屏幕的位置,可以换不同的参数 top|bottom|left|right 等等参数来试验。

现在增加参数 android:gravity = "bottom|right" 完整 XML 如下,看看效果

<? xml version = "1.0" encoding = "utf-8" ?>

< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

android:layout_height = "200dp"

android:layout_width = "200dp"

android:background = "#AABBCC"

android:orientation="horizontal"

android:layout_gravity= "center"

android:gravity = "bottom|right " >

< TextView android:text = "ONE"

android:background = "#aa0000"

android:layout_height = "wrap_content"

android:layout_width = "wrap_content"

android:layout_margin = "1dp" />

< TextView android:text = "TWO"

android:background = "#aa0000"

android:layout_height = "wrap_content"

android:layout_width = "wrap_content"

android:layout_margin = "1dp" />

</ LinearLayout >

通过改变android:gravity 参数的值可以看到实际效果。


参数 android:orientation= " horizontal " 决定了每个子元素各占一列,如果

参数 android:orientation= " vertical " 则每个子元素各占一行,也就是从上到下排列了。


对于 LinearLayout 布局的子元素,给每个子元素加上参数 android:layout_weight

看看效果

<? xml version = "1.0" encoding = "utf-8" ?>

< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

android:layout_height = "200dp"

android:layout_width = "200dp"

android:background = "#AABBCC"

android:layout_gravity = "center"

android:gravity = "bottom|right"

android:orientation = "horizontal" >

< TextView android:text = "ONE"

android:background = "#aa0000"

android:layout_height = "wrap_content"

android:layout_width = "wrap_content"

android:layout_margin = "1dp"

android:layout_weight = "1" />

< TextView android:text = "TWO"

android:background = "#aa0000"

android:layout_height = "wrap_content"

android:layout_width = "wrap_content"

android:layout_margin = "1dp"

android:layout_weight = "2" />

</ LinearLayout >

TextONE 的权重为1 ,但明显占的宽度比TWO 的小,百思不得其解,后来得知,如果把TextView 的参数android:layout_width = "wrap_content" 全部修改为 android:layout_width = "fill_parent" , ok ,代码如下


<? xml version = "1.0" encoding = "utf-8" ?>

< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"

android:layout_height = "200dp"

android:layout_width = "200dp"

android:background = "#AABBCC"

android:layout_gravity = "center"

android:gravity = "bottom|right"

android:orientation = "horizontal" >

< TextView android:text = "ONE"

android:background = "#aa0000"

android:layout_height = "wrap_content"

android:layout_width = " fill_parent "

android:layout_margin = "1dp"

android:layout_weight = "1" />

< TextView android:text = "TWO"

android:background = "#aa0000"

android:layout_height = "wrap_content"

android:layout_width = " fill_parent "

android:layout_margin = "1dp"

android:layout_weight = "2" />

</ LinearLayout >

分享到:
评论

相关推荐

    《Android自定义组件开发详解》

    5.3.1 线性渐变(LinearGradient) 126 5.3.2 径向渐变(RadialGradient) 130 5.3.3 扫描渐变(SweepGradient) 135 5.3.4 位图渐变(BitmapShader) 138 5.3.5 混合渐变(ComposeShader) 140 5.3.6 渐变与Matrix ...

    老罗android视频开发源码和ppt经典

    2.2 android线性布局的介绍 2.3 android框架布局的使用 2.4 相对布局的使用 2.5 表格布局的介绍 三、Android解析xml文件 3.1 android解析xml文件 3.2 android使用pull解析xml 3.3 android使用dom解析xml 四、...

    Android入门到精通源代码.

    4.1.4 布局参数(LayoutParams) 4.2 常用Widget组件 4.2.1 文本框视图(TextView) 4.2.2 按钮(Button) 4.2.3 图片按钮(ImageButton) 4.2.4 编辑框(EditText) 4.2.5 多项选择(CheckBox) 4.2.6 单项选择...

    Android典型技术模块开发详解

    8.1.1 线性布局 8.1.2 相对布局 8.1.3 绝对布局 8.1.4 Frame布局 8.1.5 表格布局 8.2 Tab布局 8.3 ScrollView 8.4 ListView(列表) 8.4.1 继承自ListActivity 8.4.2 ListView灵活运用 8.5 GirdView(网格) 8.6 ...

    view类详解

    ViewGroup作为提供各种布局结构的layouts的父类,例如linear线性布局,表格布局和绝对布局。 一个view对象是一个数据结构,他存储布局参数和屏幕特定区矩形区域的内容。一个view会处理自己所在屏幕区域的测量、布局...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    黎活明android教程的全程PPT

    LinearLayout (线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局) 第二天 1&gt; 单元测试 2&gt; 查看与输出日志信息 3&gt; 文件操作 4&gt; 往SDCard读写文件 5&gt;...

    传智播客Android视频教程-课程源码.rar

    LinearLayout (线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局) 第二天 1&gt; 单元测试 2&gt; 查看与输出日志信息 3&gt; 文件操作 4&gt; 往SDCard读写文件 5&gt; ...

    Android开发资料合集-World版!

    3.2、线性布局(LINEAR LAYOUT) 36 3.3、相对布局(RELATIVE LAYOUT) 39 3.4、TABLELAYOUT 40 3.5、ABSOLUTELAYOUT 47 4、ANDROID UI 控件 48 4.1、IMAGEBUTTON 48 4.1.1、图案填充问题 48 4.2、TEXTVIEW 49 4.2.1...

    Android 开发技巧

    3.2、线性布局(LINEAR LAYOUT) 36 3.3、相对布局(RELATIVE LAYOUT) 39 3.4、TABLELAYOUT 40 3.5、ABSOLUTELAYOUT 47 4、ANDROID UI 控件 48 4.1、IMAGEBUTTON 48 4.1.1、图案填充问题 48 4.2、TEXTVIEW 49 4.2.1...

Global site tag (gtag.js) - Google Analytics