2012-03-04 12 views
47

Tengo un LinearLayout vertical que contiene un ImageView y algunos otros diseños y vistas.ImageView en el diseño XML de Android con layout_height = "wrap_content" tiene relleno superior e inferior

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

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:contentDescription="@string/banner_alt" 
     android:src="@drawable/banner_portrait" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/main_search" 
     android:gravity="center" 
     android:textStyle="bold" /> 

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

     <Spinner 
     android:id="@+id/search_city_spinner" 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:prompt="@string/search_city_prompt" 
     android:entries="@array/search_city_array" /> 

     <Spinner 
     android:id="@+id/search_area_spinner" 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:prompt="@string/search_area_prompt" 
     android:entries="@array/search_area_array" /> 

    </LinearLayout> 

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

     <Spinner 
     android:id="@+id/search_rooms_spinner" 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:prompt="@string/search_rooms_prompt" 
     android:entries="@array/search_rooms_array" /> 

     <Spinner 
     android:id="@+id/search_min_spinner" 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:prompt="@string/search_min_prompt" 
     android:entries="@array/search_min_array" /> 

     <Spinner 
     android:id="@+id/search_max_spinner" 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:prompt="@string/search_max_prompt" 
     android:entries="@array/search_max_array" /> 

    </LinearLayout> 

    <Button 
     android:id="@+id/saearch_button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/search_button" 
     android:onClick="searchButton" /> 

</LinearLayout> 

Mi problema es que cuando se visualiza la actividad, el ImageView tiene un acolchado en la parte superior & inferior. Confirmé que es ImageView (al establecer un color de fondo en ImageView).

La imagen es 450x450px. Establecer manualmente la altura a 450px produce el efecto deseado (sin relleno) y establecerlo en 450dp produce el mismo efecto que usar wrap_content.

Parece que Android está tomando la altura de la imagen (450px) y ajustando la altura de ImageView al mismo valor, pero en dp.

¿Alguna idea sobre qué puedo hacer para solucionar esto? No quiero usar valores absolutos ya que proporcionaré diferentes imágenes para diferentes densidades de pantalla.

Respuesta

127

Tuve un problema similar y lo resolví usando android:adjustViewBounds="true" en ImageView.

<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:contentDescription="@string/banner_alt" 
    android:src="@drawable/banner_portrait" /> 
+13

Esto hizo el truco para mí. Parece contradictorio que esta no sea la configuración predeterminada. Es "wrap_content" - pero en realidad no ... – erlando

+2

No funcionó para mí. Terminé agregando un oyente para cambiar manualmente el tamaño de la imagen para que coincida con la relación de aspecto correcta cada vez que cambia el diseño de la imagen. – gsteinert

+1

Eso hizo que mi día :-) –

Cuestiones relacionadas