2011-07-15 135 views
3

我有一个LinearLayout,其中包含基本上模仿3x2网格的子布局。每个子布局在屏幕上占用相等的空间(宽度)。现在,我正在寻找两行子画面拉伸高度,以便每个画面占用50%的屏幕。我试着玩弄重量,但是我不知道如何修改我现有的布局代码,而不会弄乱用于宽度的现有重量。任何人都可以提供一些帮助吗?谢谢!这是我的布局代码:Android扩展布局高度,使布局占用屏幕的50%

<LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_marginBottom="2dip" 
     android:layout_height="wrap_content" > 

      <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="0dp" 
       android:layout_weight="50" 
       android:padding="10dip" 
       android:layout_marginRight="1dip" 
       android:background="@drawable/detail_row" 
       android:layout_height="wrap_content" > 

        <ImageView 
         android:id="@+id/menuImage1" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

        <TextView 
         android:id="@+id/textImage1" 
         android:layout_column="1" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:text="" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

      </LinearLayout> 


      <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="0dp" 
       android:layout_weight="50" 
       android:padding="10dip" 
       android:layout_marginLeft="1dip" 
       android:layout_marginRight="1dip" 
       android:background="@drawable/detail_row" 
       android:layout_height="wrap_content" > 

        <ImageView 
         android:id="@+id/menuImage2" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

        <TextView 
         android:id="@+id/textImage2" 
         android:layout_column="1" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:text="" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

      </LinearLayout> 

      <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="0dp" 
       android:layout_weight="50" 
       android:padding="10dip" 
       android:layout_marginLeft="1dip" 
       android:background="@drawable/detail_row" 
       android:layout_height="wrap_content" > 

        <ImageView 
         android:id="@+id/menuImage3" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

        <TextView 
         android:id="@+id/textImage3" 
         android:layout_column="1" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:text="" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

      </LinearLayout> 

    </LinearLayout> 

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

      <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="0dp" 
       android:layout_weight="50" 
       android:padding="10dip" 
       android:layout_marginRight="1dip" 
       android:background="@drawable/detail_row" 
       android:layout_height="wrap_content" > 

        <ImageView 
         android:id="@+id/menuImage4" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

        <TextView 
         android:id="@+id/textImage4" 
         android:layout_column="1" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:text="" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

      </LinearLayout> 


      <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="0dp" 
       android:layout_weight="50" 
       android:padding="10dip" 
       android:layout_marginLeft="1dip" 
       android:layout_marginRight="1dip" 
       android:background="@drawable/detail_row" 
       android:layout_height="wrap_content" > 

        <ImageView 
         android:id="@+id/menuImage5" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

        <TextView 
         android:id="@+id/textImage5" 
         android:layout_column="1" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:text="" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

      </LinearLayout> 

      <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="0dp" 
       android:layout_weight="50" 
       android:padding="10dip" 
       android:layout_marginLeft="1dip" 
       android:background="@drawable/detail_row" 
       android:layout_height="wrap_content" > 

        <ImageView 
         android:id="@+id/menuImage6" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

        <TextView 
         android:id="@+id/textImage6" 
         android:layout_column="1" 
         android:layout_gravity="center_horizontal|center_vertical" 
         android:text="" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" /> 

      </LinearLayout> 

    </LinearLayout> 

回答

7

应用相等的android:layout_weight(例如50)值在您现有代码中的两个“主 - 父”LinearLayouts上。这将使它们各占据任何现有空闲空间的一半。

然后把你所有的代码放在另一个新的LinearLayout中。这个新的应该被设置为填充父宽度和高度。它的方向应该是垂直的。

这应该让你走上前进的道路,但你可能需要调整你现有的代码,使它看起来完全如你所愿。

我运行使用此代码短的测试:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_marginBottom="2dip" 
    android:layout_height="fill_parent"> 
    <LinearLayout android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_marginBottom="2dip" 
     android:layout_weight="50" 
     android:layout_height="wrap_content"> 

     <LinearLayout android:orientation="vertical" 
      android:layout_width="0dp" 
      android:layout_weight="50" android:padding="10dip" 
      android:layout_marginRight="1dip" 
      android:background="@drawable/icon" 
      android:layout_height="wrap_content"> 

      <ImageView android:id="@+id/menuImage1" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

      <TextView android:id="@+id/textImage1" 
       android:layout_column="1" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:text="" android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

     </LinearLayout> 


     <LinearLayout android:orientation="vertical" 
      android:layout_width="0dp" 
      android:layout_weight="50" android:padding="10dip" 
      android:layout_marginLeft="1dip" 
      android:layout_marginRight="1dip" 
      android:background="@drawable/icon" 
      android:layout_height="wrap_content"> 

      <ImageView android:id="@+id/menuImage2" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

      <TextView android:id="@+id/textImage2" 
       android:layout_column="1" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:text="" android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

     </LinearLayout> 

     <LinearLayout android:orientation="vertical" 
      android:layout_width="0dp" 
      android:layout_weight="50" android:padding="10dip" 
      android:layout_marginLeft="1dip" 
      android:background="@drawable/icon" 
      android:layout_height="wrap_content"> 

      <ImageView android:id="@+id/menuImage3" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

      <TextView android:id="@+id/textImage3" 
       android:layout_column="1" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:text="" android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

     </LinearLayout> 

    </LinearLayout> 

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

     <LinearLayout android:orientation="vertical" 
      android:layout_width="0dp" 
      android:layout_weight="50" android:padding="10dip" 
      android:layout_marginRight="1dip" 
      android:background="@drawable/icon" 
      android:layout_height="wrap_content"> 

      <ImageView android:id="@+id/menuImage4" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

      <TextView android:id="@+id/textImage4" 
       android:layout_column="1" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:text="" android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

     </LinearLayout> 


     <LinearLayout android:orientation="vertical" 
      android:layout_width="0dp" 
      android:layout_weight="50" android:padding="10dip" 
      android:layout_marginLeft="1dip" 
      android:layout_marginRight="1dip" 
      android:background="@drawable/icon" 
      android:layout_height="wrap_content"> 

      <ImageView android:id="@+id/menuImage5" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

      <TextView android:id="@+id/textImage5" 
       android:layout_column="1" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:text="" android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

     </LinearLayout> 

     <LinearLayout android:orientation="vertical" 
      android:layout_width="0dp" 
      android:layout_weight="50" android:padding="10dip" 
      android:layout_marginLeft="1dip" 
      android:background="@drawable/icon" 
      android:layout_height="wrap_content"> 

      <ImageView android:id="@+id/menuImage6" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

      <TextView android:id="@+id/textImage6" 
       android:layout_column="1" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:text="" android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

     </LinearLayout> 

    </LinearLayout> 
</LinearLayout> 
5

,如果你有两种观点各有layout_weight = 1个layout_height =“FILL_PARENT”,那么他们应该被共享的屏幕空间同样

2

这里是我是如何做到这对我来说:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="100"> 
    <LinearLayout android:layout_weight="50" 
     android:layout_width="match_parent" 
     android:id="@+id/linearLayout1" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"></LinearLayout> 
</LinearLayout> 

http://www.hrupin.com/2012/02/how-to-set-view-width-height-in-percentage-of-parent-view-in-android

+0

这是真棒。简短而甜美。非常感谢你。 –