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

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

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

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

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

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

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

如果某个子元素的 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, 其包含有2 个TextView 视图,为了对参数 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 >

Text 为ONE 的权重为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开发-布局中 layout_gravity、gravity、orientation、layout_weight的更多相关文章

  1. 从零开始学android开发- 应用程序窗体显示状态操作requestWindowFeature

    我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其他的需求,今天这一讲就是如何控制Android应用程序的窗体显示. 首先介绍一个重要方法那就是requestWindowFeat ...

  2. 从零开始学android开发- layout属性介绍

    android:id 为控件指定相应的ID android:text 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串 android:gravity 指定Vi ...

  3. 从零开始学android开发-通过WebService进行网络编程,使用工具类轻松实现

    相信大家在平常的开发中,对网络的操作用到HTTP协议比较多,通过我们使用Get或者Post的方法调用一个数据接口,然后服务器给我们返回JSON格式的数据,我们解析JSON数据然后展现给用户,相信很多人 ...

  4. 从零开始学android开发-创建第一个android项目

    打开ADT开发工具

  5. 从零开始学android开发-adt-bundle-eclipse下的修改android app名称

    eclipse中,打开项目根目录中的AndoirManifest.xml文件,找到如下内容 <application android:allowBackup="true" a ...

  6. 从零开始学android开发-通过WebService获取今日天气情况

    因为本身是在搞.NET方面的东东,现在在学习Android,所以想实现Android通过WebService接口来获取数据,网上很多例子还有有问题的.参考:Android 通过WebService进行 ...

  7. 从零开始学android开发-View的setOnClickListener的添加方法

    1)第一种,也是最长见的添加方法(一下都以Button为例) Button btn = (Button) findViewById(R.id.myButton); btn .setOnClickLis ...

  8. 从零开始学android开发-Json转换利器Gson之实例

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. jar和源码下载地址: h ...

  9. 从零开始学android开发-获取TextView的值

    昨日写一个Android Demo,逻辑大概是从TextView获取其中的值,然后处理后再放回TextView中.整个处理过程是由一个Button的OnClick触发的. 可是在调试的过程中,一点击B ...

随机推荐

  1. 【jQuery】鼠标接触按钮后改变图片

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  2. ORACLE RAC 监听配置 (listener.ora tnsnames.ora)

    Oracle RAC 监听器的配置与单实例稍有不同,但原理和实现方法基本上是相同的.在Oracle中 tns进程用于为指定网络地址上的一个或多个Oracle 实例提供服务注册,并响应来自客户端对该服务 ...

  3. z-index的妙用

    总是在纠结一个问题,当然我是前端初学者.这个问题就是,一个元素放在另一个元素里面,总希望它显示时,但是别撑开元素.这个时候一定要想到z-index. 例如今天写的一个浮动在导航栏下面的一个图片,我用的 ...

  4. 查询MySQL锁等待的语句

    select 'Blocker' role,    p.id,    p.user,    left(p.host, locate(':', p.host) - 1) host,    tx.trx_ ...

  5. SQL之50个常用的SQL语句

    50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,T ...

  6. Google服务背后的天文数字

    每天当我们在互联网上驰骋的时候,在背后支撑网页.应用.服务运转的就是各种编程语言和代码.无论是Gmail确认收件箱还是执行关键词搜索都需要大量的代码,但是你知道Google的各项互联网服务合起来需要多 ...

  7. DateTime日期计算

    //今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateStrin ...

  8. 从python的yield说起

    前段时间在读trac 中wiki模块的源码的时候,发现了很多地方都使用了yiled这一关键词, 感觉是在需要返回某个值的地方通过yield来代替return, 不是很明白其用法,所以仔细研究下. 一个 ...

  9. Oracle创建用户及表空间 代码片段

    create tablespace testdatalogging datafile 'D:\oracle\oradata\orcl\testdata.dbf' size 50m autoextend ...

  10. 【Hadoop代码笔记】Hadoop作业提交之TaskTracker 启动task

    一.概要描述 在上篇博文描述了TaskTracker从Jobtracker如何从JobTracker获取到要执行的Task.在从JobTracker获取到LaunchTaskAction后,执行add ...