Android(java)学习笔记96:layout_weight使用注意事项
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)学习笔记96:layout_weight使用注意事项的更多相关文章
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- Android 数字签名学习笔记
Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...
- 【Java学习笔记之二十六】深入理解Java匿名内部类
在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...
- 20145316许心远《Java学习笔记(第8版)》课程总结
20145316许心远<Java学习笔记(第8版)>课程总结 每周读书笔记链接汇总 ▪ 第一周读书笔记 ▪ 第二周读书笔记 ▪ 第三周读书笔记 ▪ 第四周读书笔记 ▪ 第五周读书笔记 ▪ ...
- Android:日常学习笔记(7)———探究UI开发(4)
Android:日常学习笔记(7)———探究UI开发(4) UI概述 View 和 ViewGrou Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成 ...
- Android:日常学习笔记(8)———探究UI开发(3)
Android:日常学习笔记(8)———探究UI开发(3) 详解四种基本布局 前言 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 ...
- Android:日常学习笔记(6)——探究活动(4)
Android:日常学习笔记(6)——探究活动(4) 活动的启动模式 standard模式 standard是活动默认的启动模式,在不进行显示定义的情况下,所有活动都会自动使用这种启动模式. stan ...
随机推荐
- Codeforces - 102222C - Caesar Cipher
https://codeforc.es/gym/102222/my 好像在哪里见过这个东西?字符的左右移还是小心,注意在mod26范围内. #include<bits/stdc++.h> ...
- CodeForces 110C 【构造】
思路: 7越多越好,然后从7最多个数枚举过去,判断一下剩下的能不能用4解决就好了: #include <bits/stdc++.h> using namespace std; typede ...
- Codevs 1080 线段树练习(CDQ分治)
1080 线段树练习 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 一行N个方格,开始每个格子里都有 ...
- 洛谷P1282 多米诺骨牌
P1282 多米诺骨牌 题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S ...
- bzoj4435: [Cerc2015]Juice Junctions(最小割树+hash)
传送门 首先最大流等于最小割,那么可以转化为最小割树来做(不知道什么是最小割树的可以看看这题->这里) 具体的做法似乎是$hash[i][j]$表示最小割为$i$时点$j$是否与$S$连通 然后 ...
- MCP|ZCM|Investigating Lactococcus lactis MG1363 response to phage p2 infection at the proteome level(研究乳酸乳球菌MG1363在噬菌体p2感染后的蛋白质组水平变化)
一.概述: 噬菌体是特异性感染并最终杀死其细菌宿主的病毒.他们在所有生态系统中发挥着关键的生态作用.尽管经过了几十年的研究,噬菌体与细菌宿主之间的相互作用仍然知之甚少.本研究使用无标记定量蛋白质组学来 ...
- MCP|XN|Decreased Antibiotic Susceptibility Driven by Global Remodeling of the Klebsiella pneumoniae Proteome(肺炎杆菌通过整体重构蛋白质组降低抗生素敏感性)
文献名:Decreased Antibiotic Susceptibility Driven by Global Remodeling of the Klebsiella pneumoniae Pro ...
- web综合案例02
web综合案例02 web综合案例02 web综合案例02 ... ... 内容待添加
- 设置Input标签Date默认值为当前时间
需求:想设置Imput标签Date默认值为当前时间,通过JavaScript实现. <html> ...... <body> <input type="date ...
- redis使用方法
redis缓存服务器笔记 redis是一个高性能的key-value存储系统,能够作为缓存框架和队列 但是由于他是一个内存内存系统,这些数据还是要存储到数据库中的 作为缓存框架: create/upd ...