2012-01-17 10 views
6

Próbuję uzyskać obraz w tle, aby było widoczne, dopóki tło nie zostanie wypełnione.Kadrowanie obrazów w systemie Android przy użyciu ImageView w formacie XML

Mój obecny kod jest:

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

Jednak to właśnie sprawia, że ​​obraz nie pokrywające (glazura) od dołu do góry, ale nie od lewej do prawej. Co powinienem robić?

Edit: Próba wersję XML:

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

main.xml mógł znaleźć cartoonclouds w tym samym folderze co plik XML, ale nie mógł znaleźć tego pliku XML.

Odpowiedz

32

Najpierw umieść obraz w pliku takim jak res/drawable/cloud.png. Dzięki temu jest ona dostępna dla Twojej aplikacji jako @ drawable/cloud. Ale nie układa się (jeszcze).

Następnie należy zdefiniować zasób mapy bitowej (1) za pomocą Androida: tileMode = "repeat". Na przykład, można zdefiniować go na mytileablebitmap.xml:

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

ten przedstawieniu oryginalnego fragmentu obrazu (odkształcalne/cloud) i podejmowania rozciągliwej, że wie, jak dachówka sama wypełnić dostępną przestrzeń.

Następnie, jeśli chcesz użyć tła kafelkowego, użyj "@ drawable/mytileablebitmap".

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

+2

Ok, zrobiłem to, co powiedziałeś; w moim pliku main.xml rozpoznaje '@ drawable/cloud', ale nie' @ drawable/mytileablebitmap', gdy oba istnieją, jeden jako .jpg i jeden jako .xml. (daje mi błąd w pliku XML) –

+5

Aha, i odkryłem, że jeśli chodzi o użycie tego kafelka do rysowania w ImageView, to musiałem ustawić "ScaleType" na 'fitXY'. Zmieniłem także rysowanie bitmapowe - ustaw "android: gravity" na "fill_vertical", gdzie potrzebowałem rzeźbienia wzdłuż osi Y, oraz 'fill_horizontal', gdzie potrzebowałem obróbki wzdłuż osi X. To może pomóc komuś. – nemesisfixx

+0

@nemesisfixx: ScaleType pasujące do XY było jedyną częścią, której mi brakowało. To jedna z najważniejszych kwestii! –

Powiązane problemy