`
caiwb1990
  • 浏览: 314943 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

layout-weight属性

 
阅读更多
lanyout_weight:用于给一个线性布局中的诸多视图的重要度赋值,默认为零,数值越小,重要度越高,先来看一下效果:


这里有两个Linearlayout,上面一个是三张图片,下面是几句话,这里分别给两个
Linearlayout设置lanyout_weight属性为1,2;在第一个Linearlayout中分别给三张图片设置设置lanyout_weight属性为1,2,3;

然后看另一个效果:


这里的变化只是把三张图片的lanyout_weight属性设置为1,1,3

现在再看lanyout_weight属性都为1时的布局:


三张图对比来看会给人一种错觉即lanyout_weight属性是某个组件在布局中所占的比例,
我一开始也是这么想的,但是后面发现2个问题:
1.三张图都设置为1时他们并没有平分,第三个图的比例大于前两图
2.Linearlayout本身的lanyout_weight属性和Linearlayout中组件的lanyout_weight属性的效果是反过来的(Linearlayout中lanyout_weight低的所占比例大,TextView中lanyout_weight高的所占比例大)

百度了一下有人说 “在一个LinearLayout内各个组件是按weight值以正比形式显示在屏幕上  而在LinearLayout之间以反比的形式显示在屏幕上  ”。。。

我想这个属性不会这么二吧不同组件的效果还不一样。。

最后搞到官方文档关于这个属性的解释

引用
LinearLayout  also supports assigning a weight to individual children. This attribute assigns an "importance" value to a view, and allows it to expand to fill any remaining space in the parent view. Child views can specify an integer 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. For example, if there are three text boxes and two of them declare a weight of 1, while the other is given no weight (0), the third text box without weight will not grow and will only occupy the area required by its content. The other two will expand equally to fill the space remaining after all three boxes are measured. If the third box is then given a weight of 2 (instead of 0), then it is now declared "more important" than both the others, so it gets half the total remaining space, while the first two share the rest equally.



其实很简单,weight本来的意思就是重量,即这个属性所代表的是重要程度,而不是比例

如果三个view横列,前两个view的wieght是1,第三个是默认值0。可见第三个view的权weight最低,那么第三个view就只会占用自己内容所需的宽度,剩下的宽度会被前两个view平分。

如果第三个view的wieght是2,那么前两个view就只占据自己内容所需的宽度,第三个会占据剩下所有空间。

至于Linearlayout的weight属性越小的所占空间越多,我觉得这是因为Linearlayout的默认高度问题,一个简单的实验当我把两个Linearlayout的值设为1和5的时候,屏幕比例依然不变,因为第一个Linearlayout的默认大小就是那么大


分享到:
评论

相关推荐

    Android移动开发-Weight计算.zip

    在Android移动开发中,"Weight"一词通常与布局管理器相关,特别是LinearLayout中的`layout_weight`属性。这个属性在创建动态、响应式界面时非常关键,因为它允许开发者分配视图组件之间的空间比例,而不仅仅是固定...

    layout-kpp.zip_android

    例如,线性布局通过`android:orientation`属性决定排列方向,`android:weightSum`可以用来分配空间权重;相对布局通过`android:layout_toLeftOf`, `android:layout_below`等属性指定子视图相对位置;约束布局则利用`...

    Android weight属性demo

    在Android开发中,`weight`属性是LinearLayout布局管理器中的一个重要概念,用于实现视图组件的权重分配,尤其是在处理屏幕尺寸适配时显得尤为重要。`weight`属性是Android为了解决在不同分辨率和屏幕尺寸设备上保持...

    css2中文手册 学习css的必选

    font color font-family font-size font-size-adjust font-stretch font-style font-weight text-decoration text-underline-position text-shadow font-variant text-transform line-height letter-spacing word-...

    android-linear-layout-and-layout-gravity:线性布局和 layout_gravity

    此外,`gravity`属性与`layout_gravity`有所不同,`gravity`是父视图的属性,影响其所有子视图的对齐方式,而`layout_gravity`是子视图的属性,只影响自身在父视图中的位置。 在压缩包文件`android-linear-layout-...

    apktool layout_weight Base64

    使用apktool,开发者可以查看`res/layout`目录下的XML布局文件,其中可能包含使用layout_weight属性的LinearLayout。layout_weight属性允许子视图声明它们希望占用的总空间的一部分。例如,两个并排放置的按钮,如果...

    Android应用中通过Layout_weight属性用ListView实现表格

    在Android应用开发中,`Layout_weight`属性是一个非常关键的概念,尤其在使用`LinearLayout`时。`Layout_weight`用于在`LinearLayout`中控制子视图(Views)如何平分剩余空间,这对于创建灵活且响应式的用户界面至关...

    2011.10.13(4)——— android android:layout_weight

    在Android开发中,`android:layout_weight`是一个非常重要的属性,尤其在布局管理器中,如LinearLayout。这个属性主要用于在有限的空间内分配组件的大小,根据权重比例来决定每个子视图占据的屏幕空间。本篇文章将...

    weight属性详解

    ### weight属性详解 #### 一、前言 在Android开发中,`LinearLayout`是一种非常常见的布局方式,它可以通过`android:orientation`属性设置为垂直或水平排列子元素。此外,`LinearLayout`支持通过`android:gravity`...

    Android移动应用开发线性布局LinearLayout的weight属性简介.pdf

    3.1 为了充分利用weight属性,通常需要将android:layout_width或android:layout_height设置为"0dp",这是因为weight属性只在尺寸被设置为0时才生效。这使得LinearLayout能够根据weight值来分配额外的空间。 3.2 当...

    Android_surfaceView与layout屏幕适配总结

    3. **使用比例适配**:利用`android:weightSum`和`android:layout_weight`属性,可以创建按比例分配大小的布局元素,适应不同屏幕宽度。 4. **使用可伸缩的布局组件**:如`LinearLayout`, `RelativeLayout`, `...

    Android学习指南之Layout 布局--千锋培训

    - `Weight`:权重属性,用于按比例分配子视图的大小。当多个子视图具有不同的权重时,它们将根据权重分配空间。 例如,以下是一个简单的LinearLayout的XML代码示例: ```xml android:orientation="vertical" ...

    Layput weight

    在Android开发中,`layout_weight`属性是一个非常关键的概念,特别是在创建灵活且适应性强的用户界面时。这个属性是Android布局系统的一部分,主要用于线性布局(LinearLayout),它允许子视图按照权重分配额外的...

    Android layout_weight使用方法及实例

    在Android开发中,`layout_weight`属性是LinearLayout布局中的一个重要特性,它允许我们在有限的空间内按比例分配子视图的宽度或高度。`layout_weight`主要用于实现灵活的界面设计,尤其是在需要子视图等宽或者根据...

    Android App中的多个LinearLayout嵌套布局实例解析

    查了下资料,说是要设置layout_weight属性 资料说得不是很清楚,也没仔细看,就去弄,结果越弄越混乱。 于是静下心来,自己写xml测试,发现如下。 如果LinearLayout是最外面的一层,它是不会弹出layout_weight属性的...

    CSS的知识点归纳总结

    字体属性用来定义文本的字体样式,包括font-family属性指定字体系列,font-style属性设置字体风格,font-variant属性用于设置小型大写字母的文本显示效果,font-weight属性定义字体的粗细,font-size属性用于设置...

    Android中的android:layout_weight使用详解

    在Android开发中,`android:layout_weight`是一个关键属性,特别是在使用`LinearLayout`进行界面布局时。`layout_weight`用于指定一个子视图在父视图中的权重,它决定了控件如何分配额外的空间,尤其是在视图的尺寸...

    Androidlayoutxml属性[文].pdf

    2. **LinearLayout**:按照垂直或水平方向堆叠视图,可以设置`layout_weight`属性来按比例分配剩余空间。 3. **TableLayout**:模仿表格结构,由TableRow(行)组成,每一行是一个横向的LinearLayout。 4. **...

Global site tag (gtag.js) - Google Analytics