檬檬之魂吧 关注:8贴子:870
  • 3回复贴,共1

【檬檬--记录】android:layout_weight属性详解

只看楼主收藏回复

android:layout_weight:线性布局里面特有的权重属性,分配子控件在父控件中的占用空间
如下举例说明


1楼2015-01-11 15:47回复
    先看权重比例为1:2:2的例子
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
    android:text="红"
    android:gravity="center_horizontal"
    android:background="#aa0000"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>
    <TextView
    android:text="绿"
    android:gravity="center_horizontal"
    android:background="#00aa00"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="2"/>
    <TextView
    android:text="蓝"
    android:gravity="center_horizontal"
    android:background="#0000aa"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="2"/>
    </LinearLayout>


    3楼2015-01-11 15:50
    回复
      android:layout_weight :
      先按照子控件layout_width和layout_height属性占用空间后,再把剩余空间按照权重比例分配给子控件
      也就是说 子控件占父控件的空间 = 子控件属性 (layout_width和layout_height)+ 剩余空间
      默认 剩余空间 = 0 即子控件不单独设置android:layout_weight属性
      以android:orientation="horizontal" 为例
      1、子控件的水平属性均是wrap_content
      第一步:
      LinearLayout的属性:android:orientation="horizontal"
      即子控件水平放置
      第二步:
      看子控件的水平属性 android:layout_width
      可见三个子控件的水平属性均是wrap_content
      第三步:
      看子控件的权重属性 android:layout_weight
      红:黄:蓝 = 1 :2:2
      按照wrap_content属性,先显示红、黄、蓝所需要的空间。剩余的空间按照1:2:2赋给三个子控件
      则显示结果如图

      2、子控件的水平属性均是fill_content
      按照fill_content属性,红、绿、蓝均是占满整个屏幕,
      则 剩余空间 = 1个fill_content - 3个fill_content = -2个fill_content。
      权重属性 红:黄:蓝 = 1 :2 :2
      即 剩余空间(红):剩余空间(黄):剩余空间(蓝)= 1:2:2
      故 所占空间 (红)= 1个fill_content + (1/5)* 剩余空间 = 3/5个fill_content
      所占空间 (黄)= 1个fill_content + (2/5)* 剩余空间 = 1/5个fill_content
      所占空间 (蓝)= 1个fill_content + (2/5)* 剩余空间 = 1/5个fill_content
      则显示结果如图


      4楼2015-01-11 16:17
      回复
        再看权重比例为1:2:3的例子
        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <TextView
        android:text="红"
        android:gravity="center_horizontal"
        android:background="#aa0000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
        <TextView
        android:text="绿"
        android:gravity="center_horizontal"
        android:background="#00aa00"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2"/>
        <TextView
        android:text="蓝"
        android:gravity="center_horizontal"
        android:background="#0000aa"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="3"/>
        </LinearLayout>


        5楼2015-01-11 16:19
        回复