2012-06-30 13 views
20

W moim projekcie Android nie jestem do końca pewien, w jaki sposób sprawić, aby mój obraz tła wypełniał cały element główny RelativeLayout w formacie XML, który jest wielkością ekranu. Chcę mieć pewność, że działa to dla wszystkich współczynników kształtu, więc obraz będzie przycinany w pionie lub w poziomie, jeśli będzie to konieczne. Czy ktoś wie, jak to zrobić łatwo? Widziałem tylko pytania dotyczące ImageView s i Button s, ale niezupełnie generycznych View s.Jak sprawić, aby obraz wypełnił tło RelativeLayout bez rozciągania się?

Mój plik XML obecnie:

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

nie może BG obrazka 9ptach PNG? –

+1

Przykro nam, ale nie otrzymujesz pytania, ale rozmiar twojego zdjęcia jest poprawiony, a rozmiar ekranu jest również zapisany dla sprawy, więc wypełnij obraz ekranu, aby się rozciągnąć. –

Odpowiedz

51

Oprócz obracania obrazu w dziewięciu łatach nie sądzę, aby było to możliwe. Zamiast tego możesz dodać ImageView jako pierwszy widok w swoim RelativeLayout. Ustaw dla właściwości layout_centerInParent wartość true, a parametr layout_width i layout_height ustaw na match_parent. Następnie ustaw scaleback na centerCrop. Zapewni to, że obraz wypełni ekran bez jakichkolwiek zniekształceń, ale w zależności od rozmiaru/orientacji ekranu, niektóre z górnego/dolnego lub lewego/prawego obrazu mogą zostać obcięte.

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

Wszelkie inne poglądy w RelativeLayout pojawi się na górze ImageView, tak długo, jak jest to pierwszy widok w RelativeLayout (gdy jesteś w XML).

+0

Nie zapomnij o 'android: src =" @ drawable/background "'. – pqn

+0

@PremN. haha dziękuję, zredagowałem odpowiedź. – Flynn81

+0

Dziękuję bardzo! – DmitryKanunnikoff

11

Tworzenie bitmapy rozciągliwej XML zasobu w swoich RES/odkształcalne folderu:

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

Używaj rozciągliwej jako tło zamiast @ rozciągliwej/t

+0

Naprawdę nie chciałem, żeby to był kafelek, ale dzięki za twoją kreację wejście przy użyciu bitmapy XML. – pqn

+0

Dzięki Nobu, dokładnie tego szukałem! – zabawaba99

4

według tego answer Jeśli chcesz swój ImageView wypełnić swoją RelativeLayout, użyj align parametry ImageView.

można umieścić wszystkie swoje poglądy na parametr LinearLayout i ustawić align do tła 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> 
Powiązane problemy