• LinearLayout layout_weight 属性的4个简单演示

    感性认识一下
    服务器君一共花费 8.094 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

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

    大家都知道 weight 是权重的意思,layout_weight 在布局中起到非常重要的作用。但是它不能嵌套使用,而且只能使用在 LinearLayout 中。

    先看看 SDK 中的解释:

    Indicates how much of the extra space in the LinearLayout will be allocated to the view associated with these LayoutParams. Specify 0 if the view should not be stretched. Otherwise the extra pixels will be pro-rated among all views whose weight is greater than 0.

    重点有两个:

    1. layout_weight表示LinearLayout中额外空间的划分(可能扩大应用layout_weight前的大小也可能缩小)。
    2. 按比例(layout_weight大小的比例)

    我们先来看看一些布局,来一些感性的认识吧。

    第一种是最普遍的用法——均分,weight的值越大,占的空间越大。注意android:layout_width的值都为0dp。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#AAA" />
    
        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"/>
    
        <FrameLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#999" />
    
    </LinearLayout>
    

    第二种,占满剩余空间,不管是否处在最后一个。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <FrameLayout
            android:layout_width="40dp"
            android:layout_height="match_parent"
            android:background="#AAA" />
    
        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"/>
    
        <FrameLayout
            android:layout_width="40dp"
            android:layout_height="match_parent"
            android:background="#999" />
    
    </LinearLayout>
    

    第三种,值越大占的空间越小,值为同布局下其它控件的weight之和时,即消失。注意android:layout_width的值都为match_parent为0时占满。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#AAA" />
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1.5"/>
    
        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:background="#999" />
    
    </LinearLayout>
    

    最后一种结合android:weightSum使用,能够将控件放在屏幕的中央,宽度为屏幕的一半(weight = 0.5 weightSum)。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:weightSum="4">
    
        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"/>
    
    </LinearLayout>
    

    先举这么4个例子,后面根据需要慢慢说明和补充。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [Linux操作系统] CentOS上使用EPEL Repository 2 个条目
  2. [软件工程与项目管理] 开始了解Git 5 个条目
  3. [移动开发] Android属性系统Property 9 个条目
  4. [数据结构] 散列表(哈希表) 13 个条目
  5. [PHP程序设计] 对输入文件类型的检测 1 个条目
  6. [PHP程序设计] PHP中的Hash算法 3 个条目
  7. [PHP程序设计] 编程范式初探 3 个条目
  8. [移动开发] Android布局中的一些常用控件 2 个条目
  9. [Python程序设计] Tornado源码解析 23 个条目
  10. [PHP程序设计] PHP扩展模块安装 1 个条目
  11. [智力开发与知识管理] 信息的类型与结构 9 个条目
  12. [软件工程与项目管理] 呈现器的布局与绘制 11 个条目
窗口 -- [资讯]