O1DMBFan
O1DMBFan

Reputation: 71

Android: LinearLayout Weight

I am trying to make my layout a bit more uniform. I have a linear layout that looks like this:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

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

            <TextView 
                android:id="@+id/lblQuote" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
        </LinearLayout>

        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1">
           <TextView 
                android:id="@+id/lblLikes" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="27"/>
           <ImageView
                android:id="@+id/imgUp"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/thumbsup"/>
           <TextView 
                android:id="@+id/lblBuzzedTitle" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="Buzz Level:"/>
            <TextView 
                android:id="@+id/lblShared" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblSaid" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1">
          <TextView 
                android:id="@+id/lblHates" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="14"/>
            <ImageView
                android:id="@+id/imgDown"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/thumbsdn"/>
           <TextView 
                android:id="@+id/lblBuzzed" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblDate" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblLocation" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1">
          <TextView
            android:text=" "
            android:textSize="1pt"
            android:background="#6F7285"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>  

        </LinearLayout>
</LinearLayout>

So I've switched to this:

    <?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:weightSum="1">

            <TextView 
                android:id="@+id/lblQuote" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
        </LinearLayout>

        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:weightSum="8">
           <TextView 
                android:id="@+id/lblLikes" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="27"/>
           <ImageView
                android:id="@+id/imgUp"
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="1"
                android:src="@drawable/thumbsup"/>
           <TextView 
                android:id="@+id/lblBuzzedTitle" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="Buzz Level:"/>
            <TextView 
                android:id="@+id/lblShared" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblSaid" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:weightSum="8">
          <TextView 
                android:id="@+id/lblHates" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="14"/>
            <ImageView
                android:id="@+id/imgDown"
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="1"
                android:src="@drawable/thumbsdn"/>
           <TextView 
                android:id="@+id/lblBuzzed" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblDate" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblLocation" 
                android:layout_width="0dp" 
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:layout_weight="2"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:weightSum="1">
          <TextView
            android:text=" "
            android:textSize="1pt"
            android:background="#6F7285"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>  

        </LinearLayout>
</LinearLayout>

Upon doing that my layout goes blank in the emulator. Please advise. I do not want to switch to Relative layout I just want to know what I'm doing wrong with this bit of code. Thanks.

#

Edit 6/3/2011:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView 
                android:id="@+id/lblQuote" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Filler Text"/>
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left">
           <ImageView
                android:id="@+id/imgUp"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/thumbsup"
                android:layout_gravity="left"/>
           <TextView 
                android:id="@+id/lblLikes" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="10"
                android:layout_gravity="left"/>

           <TextView 
                android:id="@+id/lblBuzzedTitle" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="Buzz Level:"/>
            <TextView 
                android:id="@+id/lblShared" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="Shared By: Filler Name"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblSaid" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="Said By: Filler Name"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left">
            <ImageView
                android:id="@+id/imgDown"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:src="@drawable/thumbsdn"
                android:layout_gravity="left"/>
          <TextView 
                android:id="@+id/lblHates" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="4pt"
                android:text="2"
                android:layout_gravity="left"/>

           <TextView 
                android:id="@+id/lblBuzzed" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="High"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblDate" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="04/04/1987 4:32 PM"/>
            <TextView 
                android:id="@+id/lblLocation" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="Broomfield, CO"/> 
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:weightSum="1">
          <TextView
            android:text=" "
            android:textSize="1pt"
            android:background="#6F7285"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>  

        </LinearLayout>
</LinearLayout>

enter image description here

Upvotes: 1

Views: 2359

Answers (1)

Ted Hopp
Ted Hopp

Reputation: 234795

In the second version, your first nested LinearLayout has a layout_height of fill_parent. That pushes everything else down off the screen. Whenever you see yourself using layout_weight when you are also using fill_parent for both width and height, then you know that you are doing something wrong.

What are you trying to accomplish, exactly?

By the way, you don't need to use weightSum the way you are doing. If you don't specify it, it will automatically sum up the layout_weight values of all the child views. It's main use is to distribute only a fraction of the total extra space available.

Upvotes: 4

Related Questions