webentwicklung-frage-antwort-db.com.de

Wie man das RelativeLayout-Hintergrundbild ohne Dehnung ausfüllt

In meinem Android-Projekt bin ich nicht ganz sicher, wie mein Hintergrundbild das gesamte RelativeLayout-Wurzelelement in XML ausfüllen soll, was der Bildschirmgröße entspricht. Ich möchte sichergehen, dass dies für alle Seitenverhältnisse funktioniert, sodass das Bild nach Bedarf vertikal oder horizontal geschnitten wird. Weiß jemand, wie man das leicht macht? Ich habe nur Fragen bezüglich ImageViews und Buttons gesehen, aber nicht wirklich generische Views.

Meine XML-Datei derzeit:

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

Abgesehen davon, dass Sie Ihr Image in einen neunten Patch umwandeln, glaube ich nicht, dass dies möglich ist. Sie können stattdessen eine ImageView als erste Ansicht in Ihrem RelativeLayout hinzufügen. Setzen Sie layout_centerInParent auf true und setzen Sie layout_width und layout_height auf match_parent. Setzen Sie dann scaleType auf centerCrop. Dadurch wird sichergestellt, dass das Bild den Bildschirm ohne jegliche Verzerrung ausfüllt. Je nach Größe und Ausrichtung des Bildschirms werden jedoch möglicherweise einige der oberen/unteren oder linken/rechten Bildbereiche abgeschnitten.

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

Alle anderen Ansichten in RelativeLayout werden über der ImageView angezeigt, sofern es sich um die erste Ansicht in RelativeLayout handelt (wenn Sie sich in der XML-Datei befinden).

54
Flynn81

Erstellen Sie in Ihrem res/drawable-Ordner eine zeichnungsfähige XML-Ressource für Bitmaps:

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

Verwenden Sie das Zeichen als Hintergrund anstelle von @ Zeichen/Hintergrund

11
tiguchi

entsprechend dieser Antwort Wenn Sie möchten, dass Ihre ImageView Ihre RelativeLayout ausfüllt, verwenden Sie align-Parameter für ImageView.

sie können alle Ihre Ansichten auf einen LinearLayout setzen und den align-Parameter auf Ihren Hintergrund setzen: 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>

Seine intelligente und zu 100% funktionierende Antwort ist das Festlegen der Eigenschaft scaleType der Bildansicht!

 Android:scaleType="fitCenter"
0
Sheharyar Ejaz