android:layout_weight属性的工作原理

android:layout_weight属性告知LinearLayout如何进行子组件的布置安排。

我们已经为两个组件设置了同样的值,但这并不意味它们在屏幕上占据着同样的宽

度。在决定子组件视图的宽度时,LinearLayout使用的是layout_width与

layout_weight参数的混合值。LinearLayout是分两个步骤来设置视图宽度的。

activity_main.xml

1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="horizontal"
 6     tools:context=".MainActivity" >
 7
 8     <CheckBox
 9         android:id="@+id/checkBox1"
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:layout_weight="1"
13         android:text="显示" />
14
15     <Button
16         android:id="@+id/button1"
17         android:layout_width="wrap_content"
18         android:layout_height="wrap_content"
19         android:layout_weight="1"
20         android:text="按钮" />
21
22 </LinearLayout>

第一步,LinearLayout查看layout_width属性值(竖直方位则查看layout_height

属性值)。Button和CheckBox组件的layout_width属性值都设置为wrap_content,因此

它们获得的空间大小仅够绘制自身,如图1所示

    图1 第一步:基于layout_width属性值分配的空间大小

    图2 第二步:基于1∶1layout_weight属性值分配的额外空间

在布局中,Button和CheckBox组件拥有相同的layout_weight属性值,因

此它们均分了同样大小的额外空间。如将Button组件的weight值设置为2,那么

它将获得2/3的额外空间,CheckBox组件则获得剩余的1/3,如图3所示。

    图3基于2∶1layout_weight属性值不等比分配的额外空间

  weight设置值也可以是浮点数。对于weight设置值,开发者有着各自的使用习惯。

在activity_main.xml中,我们使用的是一种cocktail recipe式的weight设置风格

。另一种常见的设定方式是各组件属性值加起来等于1.0或100。这样,上个例子中按钮

组件的weight值则应该是0.66或66。
  如想让LinearLayout分配完全相同的宽度给各自的视图,该如何处理呢?很简单,

只需设置各组件的layout_width属性值为0dp以避开第一步的空间分配就可以了,这样

LinearLayout就会只考虑使用layout_weight属性值来完成所需的空间分配了,如图4

所示。

    图4layout_width="0dp",基于1∶1layout_weight属性值

时间: 2024-11-05 18:50:55

android:layout_weight属性的工作原理的相关文章

[Android] android:layout_weight 属性的工作原理

该属性告知 LinearLayout 如何安排子组件的布局: 水平方向的 LinearLayout,查看 layou_width 和 layout_weight以决定子组件的宽度. 垂直方向的 LinearLayout,查看 layou_height 和 layout_weight以决定子组件的高度. 原文地址:https://www.cnblogs.com/fphuang/p/8453350.html

android:layout_weight属性的使用方法总结

原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6282826.html android:layout_weight属性可以和其他属性配合使用,产生多种效果,但如果我们不清楚各种配合的使用,也容易产生一些 意想不到的结果,今天我们就认真的总结一下android:layout_weight属性的各种用法和产生的效果,方便今后直接拿来使用. 首先声明一句,我们一般只在LinearLayout中使用该属性,以下各种情况都是在LinearLayout中产

Android LinearLayout的android:layout_weight属性

本文主要介绍Android LinearLayout的android:layout_weight属性意义 android:layout_weight为大小权重,相当于在页面上显示的百分比,它的计算是根据LinearLayout中所有相关元素的此属性值计算的. 除了已经固定大小的,其他设置了此属性的view所占大小(长度或高度)为自己layout_weight属性值/所有layout_weight属性值*总大小.这个属性在android的sdk中都没有介绍.下面举例介绍下 比如在一个layout中

Android UI之android:layout_weight属性以及控件的比例控制

这两天在做一个Android界面的时候采用了linearlayout线性布局,并在其中放置了textview控件,设置android:layout_width属性为wrap_content时,eclipse提示说这里使用0dp取代wrap_content能获得更好的体验,顿时产生了好奇,为什么使用0dp会更好?于是探究了一番,网上已有相关的文章,学习之后作了一个总结. 首先解释一下Android:layout_weight属性的作用,其实简单理解就是用来分配空间大小,至于怎么分配,分配的是哪些空

Android layout_weight 属性使用介绍

解释:layout_weight  参数为整型值 ,它的值用于指定父控件空闲空间的分配比例. 下面举例说明 下图中红色部分即为空闲空间 相关代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" an

android:layout_weight 属性解析

1.一个LinearLayout中有多个Textview,其中一个textview是多行时.它们会第一行对齐(根据父类方法基线对齐), 在LinearLayout中设置baselineAligned = "false" 可使控件对齐. 2.在横向的LinearLayout中使用layout_weight时,一般设置 layout_width = "0dp", 如下图就是先分配了"111111111111"的宽度后,再把剩余的宽度按1:2:3分别分

CSS字体加粗属性font-weight工作原理

  font-weight允许值   normal | bold | bolder | lighter | l00 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900    font-weight初始值   normal    font-weight可否继承   是    font-weight适用于   所有元素 为理解用户代理怎样决定字体变形的粗细,得先从关键字100到900谈起,然后我们再来看它是如何继承的. 这些数字关键字用于定义与字体的相关特

Android 布局学习之——LinearLayout的layout_weight属性

一直对layout_weight属性感到比较困惑,今天学习一下,来深入了解layout_weight属性和它的用法.     定义     首先,看看Android官方文档是怎么说的,毕竟人家才是权威嘛. 官方文档的意思是: layout_weight属性用于分配LinearLayout中的的额外空间(extra space).                  如果View不想拉伸的话,layout_weight值设置为0.否则的话这些像素会按比例分配到 这些weight值大于0的所有View

android:layout_weight属性详解 (转)

在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示.android并没用提供table这样的控件,虽然有TableLayout,但是它并非是我们想象中的像html里面的table那么好用,我们常用ListView实现table的效果,但是列对齐确比较麻烦,现在用LinearLayout及属性android:layout_weight能很好地解决.下面我们共同体验下layo