2012-06-30 11 views
20

En mi proyecto de Android, no estoy muy seguro de cómo hacer que mi imagen de fondo llene la totalidad del elemento raíz RelativeLayout en XML, que es el tamaño de la pantalla. Quiero estar seguro de que esto funciona para todas las relaciones de aspecto, por lo que la imagen se recortará vertical u horizontalmente según sea necesario. ¿Alguien sabe cómo hacer esto fácilmente? Solo he visto preguntas con respecto a ImageView sy Button s, pero no realmente genérico View s.Cómo hacer que la imagen complete el fondo RelativeLayout sin estirar

Mi archivo XML actualmente:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/enclosing_rl" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background" 
    android:fitsSystemWindows="false"> 
<!-- Other elements --> 
</RelativeLayout> 
+0

no se puede hacer png imagen BG 9ptach? –

+1

Lo sentimos pero no recibimos su pregunta: el tamaño de la imagen es fijo y el tamaño de la pantalla también está archivado para un caso, así que complete la imagen de la pantalla para estirar –

Respuesta

51

Aparte de convertir su imagen en un parche nueve, no creo que esto sea posible. Lo que podría hacer en su lugar es agregar un ImageView como la primera vista en su RelativeLayout. Establezca layout_centerInParent en true y tenga el layout_width y el layout_height establecidos en match_parent. Luego configure scaleType en centerCrop. Eso asegurará que la imagen llene la pantalla sin ninguna distorsión, pero dependiendo del tamaño/orientación de la pantalla, se puede cortar parte de la parte superior/inferior o izquierda/derecha de la imagen.

<ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerInParent="true" 
     android:scaleType="centerCrop" 
      android:src="@drawable/background" /> 

Cualesquiera otras vistas en el RelativeLayout aparecerán en la parte superior de la ImageView, con tal de que es la primera vista en el RelativeLayout (cuando se está en el xml).

+0

No te olvides del 'android: src =" @ dibujable/fondo "'. – pqn

+0

@PremN. jaja gracias, edité la respuesta. – Flynn81

+0

¡Muchas gracias! – DmitryKanunnikoff

11

crear un recurso XML dibujable mapa de bits en sus res/carpeta dibujable:

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

uso que DRAWABLE como fondo en lugar de @ estirable/fondo

+0

No quería que fuera mosaico, pero gracias por su creatividad entrada en el uso de un mapa de bits XML. – pqn

+0

Gracias Nobu, ¡esto era exactamente lo que estaba buscando! – zabawaba99

4

de acuerdo con esta answer Si desea que su ImageView llenar su RelativeLayout, utilice align parámetros para ImageView.

puedes poner todos los puntos de vista de un parámetro LinearLayout y establecer align a su fondo ImageView:

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:src="@drawable/my_background" 
     android:scaleType="centerCrop" 
     android:layout_alignTop="@+id/my_views" 
     android:layout_alignBottom="@+id/my_views" 

     /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/my_views" 
     android:orientation="vertical" > 
    <!-- stuff --> 
    </LinearLayout> 


</RelativeLayout> 
Cuestiones relacionadas