1. android:layout_weight使用说明:

layout_weight是权重的意思,也就是各个控件所占的比重,用在LinearLayout布局中。当我们使用layout_weight的时候,layout_width和layout_height有三种表示方法

2. android:layout_weight使用之 layout_width为0dp:

此时,layout_weight使用的时候要求:layout_height = "0"  或者  layout_width = "0"

比如:只有如下这样layout_weight属性才会生效

(1)android:layout_width = "0dip"

         android:layout_weight = ""

(2)android:layout_height = "0dip"

         android:layout_weight = ""

下面是一个案例:

首先看看我们的布局需求,如下:

如下布局中上下各占1/2,然后这两个一半,分别如下方式分割为1/3

布局代码如下:

 <?xml version="1.0"  encoding="utf-8"?>
<LinearLayout xmln:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:oritentation="vertical"> <LinearLayout
android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="1"
android:oritentation="horizontal"> <View
android:layout_width="0dip"
android:layout_height="match_parent"
android:background="#ff0000"
       android:layout_weight="1"
/>
<View
android:layout_width="0dip"
android:layout_height="match_parent"
android:background="#0000ff"
      android:layout_weight="1"
/>
<View
android:layout_width="0dip"
android:layout_height="match_parent"
android:background="#00ff00"
      android:layout_weight="1"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
     android:layout_height="0dip"
     android:layout_weight="1"
android:oritentation="vertical"> <View
android:layout_width="match_parent"
      android:layout_height="0dip"
      android:layout_weight="1"
android:background="#ff00ff"
/>
<View
android:layout_width="match_parent"
      android:layout_height="0dip"
      android:layout_weight="1"
android:background="#00ffff"
/>
<View
android:layout_width="match_parent"
      android:layout_height="0dip"
      android:layout_weight="1"
android:background="#ffff00"
/>
</LinearLayout> </LinearLayout>

3. android:layout_weight使用之 layout_width为wrap_content:


我们可以看出,首先他们是先包含自己的内容,然后在剩下的空间中按照weight来划分,即剩下空间按照1:2来划分。

4. android:layout_weight使用之 layout_width为match_parent:

我们可以看出,刚好和第一种layout_width为0dp的布局相反。

4. 以上三种情况到底是怎么回事呢?下面来看一下layout_weight的具体计算方法:

layout_weight的意思:

如果一个控件申明了这个属性,那么这个控件的宽度(高度)等于它原有的长度(宽度或高度)加上剩余空间所占有的比重。

例如:一个假设屏幕的宽度为L.

(1)对于第一种情况:

原有长度都等于0,所以它们的长度就是剩余空间所占有的比重。

第一个button所占有的比重为L*1/(1+2)=1/3L;

第二个button所占有的比重为L*2/(1+2)=2/3L。

(2)对于第三种情况:

原有长度都等于match_parent即等于L,那么剩余空间的长度等于L-(L+L)=-L;

对于第一个button所占有的比重为:-L*1/(1+2)=-1/3L,

对于第二个button所占有的比重为:-L*2/(1+2)=-2/3L,所以它们的总长度等于原有的长度加上剩余空间所占有的比重。

即L+(-1/3L)= 2/3L 和 L+(-2/3L)= 1/3L;

即反过来的2:1就是出现的第三种情况。

Android(java)学习笔记153:layout_weight使用注意事项的更多相关文章

  1. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  2. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  3. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  4. Java学习笔记:语言基础

    Java学习笔记:语言基础 2014-1-31   最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...

  5. Android 数字签名学习笔记

    Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...

  6. 【Java学习笔记之二十六】深入理解Java匿名内部类

    在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...

  7. 20145316许心远《Java学习笔记(第8版)》课程总结

    20145316许心远<Java学习笔记(第8版)>课程总结 每周读书笔记链接汇总 ▪ 第一周读书笔记 ▪ 第二周读书笔记 ▪ 第三周读书笔记 ▪ 第四周读书笔记 ▪ 第五周读书笔记 ▪ ...

  8. Android:日常学习笔记(7)———探究UI开发(4)

    Android:日常学习笔记(7)———探究UI开发(4) UI概述  View 和 ViewGrou Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成 ...

  9. Android:日常学习笔记(8)———探究UI开发(3)

    Android:日常学习笔记(8)———探究UI开发(3) 详解四种基本布局 前言 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 ...

  10. Android:日常学习笔记(6)——探究活动(4)

    Android:日常学习笔记(6)——探究活动(4) 活动的启动模式 standard模式 standard是活动默认的启动模式,在不进行显示定义的情况下,所有活动都会自动使用这种启动模式. stan ...

随机推荐

  1. 机器学习&深度学习经典资料汇总,data.gov.uk大量公开数据

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...

  2. scaleform mobile sdk for android 多点触摸 修正

    修正 scaleform 的多点触控 (随手一记 给后来的人做个参考) scaleform 版本号 4.2.24 (估计这就是最后一个 移动版的版本了,万年没有更新了) 开始 一直以为 scalefo ...

  3. hadoop2.2原理:采样器

    多输入路径-只采一个文件-(MultipleInputs+getsample(conf.getInputFormat) 之前弄采样器,以为已经结束了工作,结果现在又遇到了问题,因为我的输入有两个文件, ...

  4. myeclipse安装svn插件的多种方式

          开发者服务评测征文 十万现金悬赏大神 方法一:在线安装 1.打开HELP->MyEclipse Configuration Center.切换到SoftWare标签页. 2.点击Ad ...

  5. VS2010如何调试IIS上的网站

    通常,我们在Visual Studio里调试ASP.NET网站,都是加个断点,然后按F5,在VS自带的虚拟服务器下调试的.但有时候,VS自带的服务器弱爆了,无法满足一些特定情况的要求,我们必须把网站放 ...

  6. json-lib反序列化时(JSONObject.toBean),时间类型为空的处理

    需求: 在我们的项目里希望JsonString传入日期类型值为空时,JSONObject.toBean时可以将Java对象的该日期属性设为null. 解决过程: json-lib反序列化Json字符串 ...

  7. The Donkey of Gui Zhou

    Problem Description There was no donkey in the province of Gui Zhou, China. A trouble maker shipped ...

  8. 活用maven使web.xml可以用maven变量

    活用maven使web.xml可以用maven变量 废话不多说,直接上代码 <build> <finalName>${finalWarName}</finalName&g ...

  9. Kooboo CMS 介绍

    Kooboo的定位是一个CMS,内容管理平台,从更严格意义上来说,它更应该网站快速开发平台.针对一般网站开发过程的分析和提炼,着重在解决网站的一般需求,提出一套快速开发网站的理念和方法.在这些理念和方 ...

  10. The iOS Design Cheat Sheet 界面设计速参

    http://ivomynttinen.com/blog/the-ios-7-design-cheat-sheet/ With the release of iOS 7, app designers ...