LinearLayout也支持给单个View控件赋值一个weight来控制各个View控件的所占大小比重。在view group中剩下的空间将会按照他们声明的权重来分配给各个控件。默认的weight值是"0"。例如,如果有三个text控件,第一个控件weight是1,第二个控件weight是2,第三个控件的weight是3。那么view group中剩下的空间将会按照下面的比重来分配:
显示效果图如下:
第一个控件,所占大小比重为1/(1+2+3)=1/6
第二个控件,所占大小比重为2/(1+2+3)=2/6
第三个控件,所占大小比重为3/(1+2+3)=3/6
下面我就将上一篇"使用ListView控件实现漂亮的自定义表格效果实例"稍做修改,利用android:layout_weight属性来设置每行中各个单元格的大小。
第一步就是修改stock_list_header.xml文件,修改后如下<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_list_header_code"
android:text="@string/stock_code"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="3"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_list_header_symbol"
android:text="@string/stock_symbol"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="3"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_list_header_last_price"
android:text="@string/stock_last_price"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_list_header_price_change"
android:text="@string/stock_price_change"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_list_header_price_change_percentage"
android:text="@string/stock_price_change_percent"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
</LinearLayout>
第二,就是修改stock_list_item.xml文件
<?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="wrap_content">
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_code"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="3"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_symbol"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="3"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_last_price"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_change_price"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
<TextView android:id="@+id/stock_change_percentage"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center"
android:gravity="center"
android:padding="2dip"
/>
<View style="@style/list_item_cell_seperator_layout"/>
</LinearLayout>
显示效果图如下:
上例中,TextView控件都设置android:layout_width="0dip"属性,是为了让所有TextView严格按照所声明的比例来分配除所有单元格分割线所占宽度以外的屏幕宽度。