Android: LinearLayout Weight - PullRequest
       0

Android: LinearLayout Weight

1 голос
/ 03 июня 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"
            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>

Итак, я переключился на это:

    <?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>

После этого мой макет становится пустым в эмуляторе. Пожалуйста, порекомендуйте. Я не хочу переключаться на относительную компоновку, я просто хочу знать, что я делаю не так с этим фрагментом кода. Спасибо.

#

Редактировать 03.06.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

1 Ответ

4 голосов
/ 03 июня 2011

Во второй версии у вашего первого вложенного LinearLayout есть layout_height of fill_parent.Это отталкивает все остальное от экрана.Всякий раз, когда вы видите, что используете layout_weight, когда вы также используете fill_parent для ширины и высоты, вы знаете, что делаете что-то не так.Кстати, вам не нужно использовать WeightSum, как вы делаете.Если вы не укажете его, он автоматически суммирует значения layout_weight всех дочерних представлений.Его основное назначение - распределять только часть общего доступного дополнительного пространства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...