2011-04-29 22 views
10

Tengo el siguiente problema;Imagen de fondo de escala en LinearLayout

Tengo un LinearLayout con un ScrollView, en ScrollView es una vista personalizada. Ahora quiero poner una imagen en el fondo de LinearLayout y mantener la imagen en su tamaño original. Pero cuando configuro la propiedad de fondo de LinearLayout, se estira para ajustarse a la pantalla completa. ¿Cómo puedo hacerlo para que la imagen conserve su tamaño original?

Mi xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/root" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/some_drawable"> 
    <ScrollView 
    android:id="@+id/scrollview" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:fillViewport="true"> 
    <some.custom.layout 
     android:id="@+id/mainLayout" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     /> 
    </ScrollView> 
</LinearLayout> 

Respuesta

20

Pruebe usar FrameLayout con ImageView y LinearLayout dentro. Por ejemplo, intente cambiar el alfa de la imagen y moverlo a primer plano en su FrameLayout, por lo que el LinearLayout permanece en el fondo. ¡Espero que esto ayude!

+0

Esto funcionó para mí, ¡muchas gracias! – Joris

+1

Esto funciona bien, pero creo que se puede encontrar una solución más elegante aquí: http://stackoverflow.com/questions/2781593/background-image-placement – iganev

0

que te pueden echar un vistazo a la InsetDrawable. O bien, o bien es probable que requiera subclasificar su diseño para dibujar de la manera que desee ya que el elemento de fondo no tiene la capacidad que necesita.

0

Como alternativa a la sugerencia de ColdForged, que podría pasar de LinearLayout a RelativeLayout y utilizar ImageView para mostrar la imagen en lugar de cambiar de fondo a la misma. Las vistas en RelativeLayout pueden interferir a diferencia de LinearLayout.

+0

He intentado esto, pero ¿cómo puedo dibujar el contenido del ScrollView sobre la vista de la imagen para que la imagen es el fondo? – Joris

+1

Tal vez al configurar alfa para scrollview background – ernazm

21

ejemplo Código de respuesta de Egor:

<FrameLayout 
    android:id="@+id/FrameLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="5dp" 
    > 

    <ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:src="@drawable/background" 
     /> 

    <LinearLayout 
     android:id="@+id/LinearLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     > 

    </LinearLayout> 

</FrameLayout>