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 ImageView
s und Button
s gesehen, aber nicht wirklich generische View
s.
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>
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).
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
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"