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

    感性认识一下
    服务器君一共花费 253.648 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. [数据库技术] MySQL中英文混合排序 4 个条目
  2. [软件工程与项目管理] 开始使用Git 3 个条目
  3. [Python程序设计] Django模板系统 11 个条目
  4. [搜索引擎优化] 百度搜索引擎优化指南 3 个条目
  5. [Linux操作系统] CentOS上使用EPEL Repository 2 个条目
  6. [PHP程序设计] CodeIgniter与PHP框架设计 5 个条目
  7. [Python程序设计] Django数据库模型 6 个条目
  8. [智力开发与知识管理] 整体性学习步骤 9 个条目
  9. [JavaScript程序设计] Web实时通信技术名词解析 5 个条目
  10. [移动开发] 刷机与root相关 2 个条目
  11. [数据结构] 图的定义 1 个条目
  12. [Python程序设计] Django与表单 4 个条目
窗口 -- [博客]