2012-01-17 24 views
6

Estoy tratando de obtener una imagen en el fondo para mosaico hasta que el fondo esté lleno.Mosaico de imágenes en Android con ImageView en XML

Mi código actual es:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/cartoonclouds" 
    android:contentDescription="@string/desc" 
    android:tileMode="repeat" /> 
    <LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" /> 
    </LinearLayout> 
</RelativeLayout> 

Sin embargo, eso sólo hace que la imagen que cubre (no azulejos) de abajo hacia arriba, pero no de izquierda a derecha. ¿Qué debería estar haciendo?

Editar: Intento de la versión XML:

<bitmap 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:tileMode="repeat" 
    android:src="@drawable/cartoonclouds" /> 

El main.xml pudo encontrar el cartoonclouds en la carpeta mismo que el archivo XML, pero no pudo encontrar el archivo XML.

Respuesta

32

Primero, coloque su imagen en un archivo como res/drawable/cloud.png. Esto lo hace accesible a su aplicación como @ drawable/cloud. Pero no tiene mosaico (todavía).

A continuación, debe definir un recurso de mapa de bits (1) con android: tileMode = "repeat". Por ejemplo, se puede definir en mytileablebitmap.xml:

<bitmap 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:tileMode="repeat" 
android:src="@drawable/cloud"/> 

Esto hace referencia a la imagen de las baldosas originales (estirable/nube) y haciendo un Disponibles que sabe baldosas para llenar todo el espacio disponible.

Luego, cuando desee utilizar el fondo de mosaico, use "@ drawable/mytileablebitmap".

(1): http://developer.android.com/guide/topics/resources/drawable-resource.html

+2

Ok, hice lo que usted ha dicho, sin embargo; en mi main.xml reconoce '@ drawable/cloud' pero no' @ drawable/mytileablebitmap' cuando ambos existen, uno como .jpg y uno como .xml. (me da un error en el archivo XML) –

+5

Ah, y encontré que si la idea es utilizar este mosaico dibujable en un ImageView, entonces me pareció necesario configurar su 'ScaleType' en' fitXY'. También alteré el mapa de bits dibujable: establecí 'android: gravity' en' fill_vertical' donde necesitaba labrar a lo largo del eje Y, y 'fill_horizontal' donde necesitaba labrar a lo largo del eje X. Eso podría ayudar a alguien. – nemesisfixx

+0

@nemesisfixx: ScaleType to fitXY era la única parte que me faltaba. Este es uno de los puntos más importantes! –

Cuestiones relacionadas