weight和weightSum

Layout Weight

LinearLayout also supports assigning a weight to individual children with the android:layout_weight attribute. This attribute assigns an “importance” value to a view in terms of how much space it should occupy on the screen. A larger weight value allows it to expand to fill any remaining space in the parent view. Child views can specify a weight value, and then any remaining space in the view group is assigned to children in the proportion of their declared weight. Default weight is zero.

大体意思就是,android:layout_weight 这个属性代表了一个“重要性”的值,这个值的大小代表了该控件能在屏幕中占据多大的空间。这个值越大,表明该控件可以在父控件中占据较多的“ 剩余 ”空间。默认的weight是0。

在这里,大家一定要注意“ 剩余 ”两个字!大家往往容易忽略这一点,导致出现了很多问题。举个例子:水平方向布局的父类有三个子类,父类总的宽度是100,子类的宽度分别是10,20,30。 那么 android:layout_weight 这个属性的目的,就是瓜分剩余的 100 - 10 - 20 - 30,也就是剩余的40的使用权。没错! 就是android:layout_weight 这个属性 仅仅决定 哪个子类能瓜分到更多的40的部分!

android:weightSum

Defines the maximum weight sum. If unspecified, the sum is computed by adding the layout_weight of all of the children.

这个就很好理解了,weightSum定义了weight 总和的最大值。如果 android:weightSum 没有定义,那么默认值就是通过各个子类的 layout_weight 累加得到。

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

android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="center"

android:orientation="horizontal"

android:weightSum="1">

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="0.5"

android:text="@string/hello_world" />

内部的计算原理是:

Button的宽度 = Button 的 width + Button的weight * 父布局(LinearLayout)的宽度 / weightSum

上面的例子,也就是 Button的宽度 = 0 + 0.5 * LinearLayout的宽度 / 1 = 0.5 * LinearLayout的宽度

也就是Button的宽度将占屏幕的一半。

注意:

在布局文件中的控件,宽高设置成0、固定值、wrap和fill时使用”weight”属性来调整大小的效果是有区别的

当 宽高为固定值时肯定是不行的;

当 android:layout_width(height)=”match_parent”或者“fill_parent”的时候,如果设置了weight属性,那么根据它的weight值(可以理解为优先级)来占据空间,而且这个值是越小,占的空间越大,按且按且相反的大小比例分。

当 android:layout_width(height)=”wrap_parent”的时候,如果设置了weight属性,那么weight值变大占据空间就变大,但是不是按照比例变化,而且weight值达到一定程度控件占据的控件大小就不会在变化。

谷歌工程师推荐大家使用android:layout_width(height)=”0dp”,因为如果你去尝试看就会发现,只有宽或高设置成“0dp”时才是真正的按照“weight”的值按比例设置控件的大小。

关于weight

在相对布局中的控件是不能使用“weight”属性的,但是,在RelativeLayout标签中是可以有“weight”属性的,也就是说你可以用”weight”属性来控制这个相对布局在整个布局中的大小,却不能用”weight”属性来控制这个相对布局中控件的大小。

android+动态设置权重,Android自适应布局(关于权重weight的使用技巧!)相关推荐

  1. android 动态设置padding,Android动态设置控件大小以及设定margin以及padding值

    http://www.aichengxu.com/Java/73893.htm Android动态设置控件大小以及设定margin以及padding值,有需要的朋友可以参考下. 一.概述 在andro ...

  2. android 高度上分权重,安卓自适应布局(关于权重weight的使用技巧!)

    weight和weightSum Layout Weight LinearLayout also supports assigning a weight to individual children ...

  3. android 动态设置windowbackground,android – windowBackground不会随主题而改变

    我的申请中有两个主题.我有一个蓝色背景的蓝色主题: @drawable/menu_hardkey_panel_actionbar @style/ButtonAppTheme @drawable/bgr ...

  4. android 动态设置margin,android 代码中设置margin

    场景:Android怎么在java代码中设置margin Android如何在java代码中设置margin 原创帖,转发请注明出处:http://thierry-xing.iteye.com/blo ...

  5. android 动态设置margin,Android 动态设置padding跟margin的问题

    最近要做到动态设置padding跟margin,设置它们四个参数都是int类型.比如这里设置了10,,可是这个数又是代表什么意思呢?一直很好奇它们的单位问题,所以这就造成了,在不同手机上的适配问题.有 ...

  6. android动态设置src,Android 代码里设置ImageView的src和background

    设置ImageView的src: image.setImageDrawable(getResources().getDrawable(R.drawable.blackk)); String path= ...

  7. android textview layoutparams,Android动态设置布局的LayoutParams属性总遇到造型异常

    Android动态设置布局的setLayoutParams()属性总遇到造型异常问题 android:id="@+id/introduce" android:layout_widt ...

  8. android 动态改变语言,android动态设置app当前运行语言的方法

    android开发中有时候碰到切换语言的需求,这时候需要通过代码动态改变当前运行语言. package com.example.androidtest; import java.util.Locale ...

  9. Android 动态设置宽高

    Android 动态设置宽高 val params: FrameLayout.LayoutParams = view?.layoutParams as FrameLayout.LayoutParams ...

最新文章

  1. Linux终端C语言实现图片拷贝
  2. Java Exception
  3. [NOIP2015]子串
  4. json数据解析_VBA 实践指南 -- Split函数解析Json数据
  5. Thymeleaf 学习笔记 (2)
  6. 赋值、浅拷贝、深拷贝
  7. 安卓和ios抓包神器
  8. Elasticsearch6 去重
  9. 简单了解各种序列化技术-JSON序列化框架
  10. vector容器中清空元素(但原来的元素还在)
  11. 前端学习(2452):封装数据接口
  12. C语言--《C专家编程》C语言申明的优先级规则
  13. 关于瑞昱8763bfr的学习总结(1)
  14. C/C++ typedef用法!
  15. 仿TT语音,语音游戏陪玩APP源码,社交属性强大
  16. 题目:P3717 [AHOI2017初中组]cover
  17. 湖南工业大学计算机学院有哪些社团,湖南工业大学学生社团联合会
  18. 2021物理化学实验2:分光光度法测溴酚蓝的电离平衡常数
  19. 图形虚拟化技术为每个英特尔®显卡家族提供支持
  20. 内核辅助函数系列 001 --- __ffs(unsigned long word):第一个非 0 位

热门文章

  1. 揭秘聚划算活动的营销技巧!!!
  2. 面试精讲(guigu)
  3. 创建多个wordpress_如何轻松创建多语言WordPress网站
  4. 做计算机视觉对电脑配置的要求,计算机视觉环境配置
  5. Spring Boot应用退出
  6. django迁移数据库乱了,彻底重新再来的步骤
  7. Framework定制系列(一)-----SystemUI NavigationBar导航栏上滑返回Launcher
  8. 文件头文件尾全面总结
  9. 建立远程服务器链接失败,无法建立与远程邮件服务器的 TLS 连接 - Exchange | Microsoft Docs...
  10. java一条System.out语句打印多个变量