2011-03-29 11 views
8

Estoy tratando de establecer una imagen de la imagen de fondo como en un diseño (por XML o por código)Problema una imagen de fondo de diseño

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_layout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/my_image"> 

o

View myLayout= findViewById(R.id.main_layout); 
myLayout.setBackgroundResource(R.drawable.my_image); 

Mi problema es que la solución androide con la imagen en la pantalla de fondo, cambiando el tamaño y modificando la proporción de la imagen.

¿Cómo puedo configurar una imagen y que la imagen ocupa solo el espacio necesario? (sin cambiar el tamaño de la imagen)

+0

si establece android: layout_width = "fill_parent", android: layout_height = "fill_parent" también su fondo "fill_parent" – carlovv

Respuesta

0

Jst toma otro diseño dentro de LinearLayout.

Colóquelo como Relativo para que pueda mantener ese diseño donde desee. y en ese diseño relativo u mantener imageView.

Y ya eso es todo creo que lo que quieres ....

0

"setBackground" cambiar el tamaño de la imagen para llenar la Vista (LinearLayout).
Agregue ImageView en LinearLayout o RelativeLayout, y luego use setImageResource para lograr eso.

7

Sin la adición de un ImageView a la disposición, si la imagen es menor que el espacio, se puede crear un xml bitmap resource como la siguiente, y usar esto en lugar de la imagen original de fondo:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/background" 
    android:gravity="center" 
/> 
+0

La imagen es realmente como la pantalla completa (480x800), con un logotipo en el medio. Pero cuando configuro la imagen como fondo, la imagen se toma en la pantalla visible (pantalla completa menos la barra de estado ...) Quiero evitar tener imágenes para diferentes resoluciones de pantalla. :( –

+0

@Jose Tal vez puedas intentar jugar con la configuración de gravedad. Si no puedes obtener lo que quieres, 'ImageView' es la única solución, pero recuerda que la relación w/h cambia con los dispositivos y que tiene una imagen del tamaño correcto para uno podría no funcionar en todas partes. – bigstones

6

Ponga su LinearLayout dentro de RelativeLayout y agrega un ImageView a RelativeLayout.

<RelativeLayout 
    android:id="@+id/relativeLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" > 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/my_image" /> 

    <LinearLayout 
     android:id="@+id/main_layout" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

Tenga en cuenta que ImageView es el primer elemento en RelativeLayout, haciendo que se dibuja en el fondo. Al declarar fitXY y adjustViewBounds en ImageView, se asegura de que su imagen mantenga su proporción. También podría desactivar adjustBounds y elegir otro scaleType como fitStart o centerCrop. También mantienen la relación de aspecto.

+0

mucho más fácil de implementar –