`
ldl8818
  • 浏览: 125646 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

android layout_weight 小记 [转]

 
阅读更多

 

在网上看了一些对Layout_weight的讲解,有些说的比较片面,只列举了一种情况,然后自己通过实验和一些比较好的文章总结了一下,特此记录下来,以备以后所用。Layout_weight是线性布局,也就是LinearLayout里面用到的,下面通过实验来看这个Layout_weight的特性。

1.当控件的属性android:layout_width="fill_parent"时,布局文件如下:

 

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="horizontal" android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <Button android:layout_width="fill_parent"  
  6.         android:layout_height="wrap_content" android:layout_weight="1"  
  7.         android:text="Button1" />  
  8.     <Button android:layout_width="fill_parent"  
  9.         android:layout_height="wrap_content" android:layout_weight="2"  
  10.         android:text="Button2" />  
  11. </LinearLayout>  

 在这里Button1的Layout_weight=1,Buttong2的Layout_weight=2,运行效果为:


我们看到,Button1占了2/3,Button2占了1/3。如果此时把button2的weight设置成2000,不是说Button2就消失了,而是Button1的宽度几乎占满了屏幕宽度,而屏幕最后一丝细条则是留给Button2的,已近非常小了,没有显示出来。截图如下:



 

 得出结论在layout_width设置为fill_parent的时候,layout_weight代表的是你的控件要优先尽可能的大,但尽可能大是有限度的,即fill_parent.

 

2.当控件的属性android:layout_width="wrap_content"时,布局文件如下:

 

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="horizontal" android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <Button android:layout_width="wrap_content"  
  6.         android:layout_height="wrap_content" android:layout_weight="1"  
  7.         android:text="Button1" />  
  8.     <Button android:layout_width="wrap_content"  
  9.         android:layout_height="wrap_content" android:layout_weight="2"  
  10.         android:text="Button2" />  
  11. </LinearLayout>  

 同样,Button1的weight设置为1,Button2的weight设置为2,但是效果与fill_parent的效果截然相反。运行效果如下:


这时,和fill_parent正好相反,Button1的宽度占据了屏幕宽度的1/3,而Button2的宽度占据了屏幕的2/3,如果此时把Button1的weight设置为2000,按照之前理解,Button1应该小的几乎在屏幕上看不到,但是错了,实验告诉我们,当Button1的weight非常小时,也要"wrap_content",也就是要保证Button1至少能够显示。以下是Button1设置weight为2000时的运行截图:


我们看到,Button1已经足够小,但是要保证他能显示出来,因此得出结论:

在layout_width设置为wrap_content的时候,layout_weight代表的是你的控件要优先尽可能的小,但这个小是有限度的,即wrap_content.

当了解这些后,我们再设计程序时,为了能够自适应屏幕,不想给控件一个指定的宽度和高度,就可以使用这个weight属性来让它按自己比例来划分屏幕高度或者宽度了。

分享到:
评论

相关推荐

    2011.10.13(4)——— android android:layout_weight

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

    Android 五种Layout 布局

    android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"&gt; android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=...

    androidlayout-marginBottom的值为负数.docx

    在Android布局设计中,`android:layout_margin`属性用于设置View与周围元素的边距,包括`android:layout_marginTop`、`android:layout_marginBottom`、`android:layout_marginLeft`和`android:layout_marginRight`。...

    Android layout_weight使用方法及实例

    但是,一旦设置了`layout_weight`,子视图将忽略其原始尺寸,转而按照权重来分配空间。 在提供的代码示例中,我们看到一个LinearLayout包含两个子视图:一个`fragment`和一个`FrameLayout`。这两个子视图的`layout_...

    Android中的android:layout_weight使用详解

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

    计算器(android)

    ntent" android:layout_height="wrap_content" android:layout_weight="1" android:text="/" /&gt; &lt;LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap...

    apktool layout_weight Base64

    "layout_weight"是Android布局系统中的一个关键概念,用于在LinearLayout中分配子视图的权重,使得它们可以根据相对比例而不是绝对大小来占据空间。Base64是一种用于将二进制数据编码为ASCII字符串的算法,常见于在...

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

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

    Android中gravity与layout_gravity的区别

    "Android中gravity与layout_gravity的区别" Android 中的 gravity 和 layout_gravity 是两个常见的属性,它们都是用于设置视图组件的对齐方式,但是它们的作用域和应用场景却有所不同。 首先,让我们来看一下 ...

    Android_layout.rar_android_android 布局_layout

    关键属性有`orientation`(设置布局方向,可选垂直或水平)、`weight`(分配子视图的额外空间比例)以及`layout_gravity`(设置子视图在父视图中的位置)。 2. **RelativeLayout**:相对布局允许子视图相对于其他...

    Android_layout_详细介绍

    子控件可以通过设置`layout_weight`属性来控制在布局中的相对大小,实现灵活的控件宽度分配。例如,两个`TextView`控件,如果一个的`layout_weight`设为1,另一个设为2,则后者会占据更多的宽度。 - **对齐方式**:...

    Android移动开发-Weight计算.zip

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

    weightDemo

    熟练掌握`layout_weight`的使用,能让你的Android布局设计更加灵活高效。通过实践和理解权重分配机制,你可以创建出适应性强、视觉美观的应用界面。在实际项目中,结合其他布局管理器,如RelativeLayout、...

    Android实训购物车页面

    -&lt;LinearLayout android:background="@drawable/aaa" android:weightSum="1" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" xmlns:android=...

    android_QQ_例子

    用Eclipse加载项目工程 &lt;LinearLayout xmlns:android=... android:layout_weight="0.66" android:background="@drawable/blue_bg" android:orientation="vertical" &gt; android:layout

    Android_layout.rar_AbsoluteLayout _android layout_android tabhos

    View的布局显示方式有下面几种:线性布局(Linear Layout)、相对布局(Relative Layout)、表格布局(Table Layout)、网格视图(Grid View)、标签布局(Tab Layout)、列表视图(List View)、绝对布局...

    Android weight属性demo

    android:layout_weight="1" &lt;!-- 设置权重 --&gt; android:text="Button 1" /&gt; android:layout_width="0dp" &lt;!-- 同样设置为0dp --&gt; android:layout_height="wrap_content" android:layout_weight="2" &lt;!-- 更...

    Android购物车代码

    -&lt;LinearLayout android:background="@drawable/aaa" android:weightSum="1" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" xmlns:android=...

    Android Layout样式布局

    - 示例:`android:layout_weight="1"` - **android:padding** - 用途:设置控件内部内容与边界的距离。 - 示例:`android:padding="10dp"` - **android:singleLine** - 用途:若设置为true,则强制控件内容在...

Global site tag (gtag.js) - Google Analytics