Что делает относительный макет wrap_content?

У меня есть простой макет следующим образом. Несмотря на то, что я установил все атрибуты как wrap_content, результирующий макет заполняет всю высоту экрана. Отдельные макеты сами по себе небольшие. Таким образом, контейнер верхнего уровня должен быть настолько большим, чтобы обернуть все его элементы. Но вроде на весь экран. По ширине те же атрибуты работают нормально. Что мне здесь не хватает?

<RelativeLayout 
    android:id="@+id/topcontainer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/solid_red"
>

<LinearLayout
    android:id="@+id/lowercontainer"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingBottom="10dip"
    android:layout_centerHorizontal="true"
    android:paddingLeft="0dip"
    android:paddingRight="0dip"
    android:layout_alignParentBottom="true"
    android:background="@drawable/solid_blue"
>

<ImageView
     android:id="@+id/lefticon"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_settings_display"
     android:layout_alignParentLeft="true"
     android:layout_alignParentBottom="true"
     android:paddingRight="0dip"
/> 

<ImageView
     android:id="@+id/righticon"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" 
     android:background="@drawable/ic_settings_display"
     android:layout_alignParentRight="true"
     android:layout_alignParentBottom="true"
     android:paddingLeft="0dip"
/> 

</LinearLayout>

   <TextView android:id="@+id/test"
        android:text="Test text"
        android:textStyle="bold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:paddingTop="10dip"
        android:gravity="center"
        android:layout_centerHorizontal="true"
        android:textSize="20dip"
        android:layout_above="@id/lowercontainer"
        android:background="@drawable/solid_green"
   />         

</RelativeLayout>

альтернативный текст


person android_devrah    schedule 04.12.2010    source источник


Ответы (1)


Именно android:layout_alignParentBottom="true" в вашем LinearLayout заставляет RelativeLayout полностью растягиваться до нижней части экрана.

person Jon Willis    schedule 04.12.2010
comment
Это так. Это: ‹RelativeLayout xmlns:android=schemas.android.com/apk/res/ android android:id=@+id/topcontainer android:layout_width=wrap_content android:layout_height=wrap_content android:background=@drawable/solid_red › - person android_devrah; 04.12.2010
comment
Извините, я видел, что вы отредактировали свой пост сразу после этого. Попробуйте опубликовать весь файл ресурсов. - person Jon Willis; 04.12.2010
comment
По какой-то причине макет верхнего уровня не отображается! Но я разместил остальную часть макета в комментарии выше. Я также приложил изображение, чтобы показать, что я получаю. - person android_devrah; 04.12.2010
comment
Именно android:layout_alignParentBottom=true в вашем LinearLayout заставляет RelativeLayout полностью растягиваться до нижней части экрана. - person Jon Willis; 04.12.2010
comment
Огромное спасибо! Вот уж точно виновник! - person android_devrah; 04.12.2010
comment
Здорово, что вы нашли виновного. Теперь, как вы это исправили? у меня такая же проблема... - person Graham Borland; 05.04.2011