线性布局(百分比定义 - layout_weight)Android

时间:2011-08-03 07:45:21

标签: android android-layout android-widget

1。问题

我希望有一条带有2条线的全屏线性布局,而第一条线分为2个部分,其中一个部分占据宽度的30%和第二个70%,第二条线分为2个部分相同的尺寸(每个宽度的50%)。此外,第一行仅占屏幕高度的33%。

我认为使用 android:layout_weight 是正确的方法。但它有点棘手,因为有时它适用于 android:layout_width ,有时适用于 android:layout_height 属性,它适用于一个或两个,具体取决于各个XML属性的值。

经过实验,我发现如果我将属性值设置为 wrap_content ,则会被 android:layout_weight 设置覆盖,例如以下代码将 android:layout_weight 应用于 android:layout_width

 <LinearLayout
  android:layout_width="wrap_content"
  android:layout_height="fill_parent"
  android:layout_weight="1"
  android:background="#FF0000"/> 

这是正确的做法吗?

2。实施例

为了贬低布局(见图),我必须这样做:

<LinearLayout
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">
    <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1"
      android:background="#FF0000"/> 
    <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="2"
      android:background="#00FF00"/> 
  </LinearLayout>
  <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="2">
    <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1"
      android:background="#0000FF"/> 
    <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1"
      android:background="#0000AA"/>      
  </LinearLayout>   
</LinearLayout>

enter image description here

由于 斯登

1 个答案:

答案 0 :(得分:1)

< LinearLayout
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">

<LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1"
      android:background="#FF0000"/> 
    <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="2"
      android:background="#00FF00"/> 
  </LinearLayout>
  <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">
    <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1"
      android:background="#0000FF"/> 
    <LinearLayout
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_weight="1"
      android:background="#0000AA"/>      
  </LinearLayout>   
</LinearLayout>