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

    感性认识一下
    服务器君一共花费 13.354 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. [移动开发] ListView 使用相关问题集 1 个条目
  2. [智力开发与知识管理] 整体性学习步骤 9 个条目
  3. [数据库技术] MySQL常用自带函数 3 个条目
  4. [移动开发] Android里的ContentValues 2 个条目
  5. [Python程序设计] 从PHP到Python 3 个条目
  6. [PHP程序设计] PHP与函数式编程 1 个条目
  7. [移动开发] 从代码角度去认识 Activity 4 个条目
  8. [软件工程与项目管理] 浏览器的HTML解析器 8 个条目
  9. [搜索引擎优化] 与百度权重有关的信息 2 个条目
  10. [Python程序设计] Python数据类型 11 个条目
  11. [Python程序设计] Python HTTP服务器 7 个条目
  12. [移动开发] Android开发基础知识 4 个条目
窗口 -- [博客]