2010-09-06 7 views
12

Ich habe ein benutzerdefiniertes Hintergrundbild erstellt und wollte es als Hintergrund für ein Layout mit einer Höhe von wrap_content verwenden. Die Gesamthöhe des Inhalts innerhalb dieses Layouts ist jedoch viel kleiner als die Höhe des Hintergrundbilds.Hintergrundbild für wrap_content

Wenn ich es als Hintergrund in XML über android: background = "@ zeichnbares/Bild", stellte ich fest, dass es die gesamte Höhe des Bildes anzeigt, obwohl die Höhe der tatsächlichen Inhalte viel kürzer sind.

Gibt es eine Möglichkeit, dies zu verhindern?

Danke.

Antwort

0

Sie können Ihr Hintergrundbild in 9-Patch-Zeichen konvertieren oder XML-Bitmap verwenden, um das Verhalten Ihres Bildes zu ändern, wenn es größer als der Container ist. Weitere Informationen zu beiden finden Sie unter this page.

+0

Könnten Sie mehr darüber erfahren, wenn Sie eine XML-Bitmap verwenden? Ich habe versucht, eine XML-Bitmap zu verwenden und die Eigenschaft android: gravity = "top | fill_horizontal | clip_vertical" verwendet, um zu sehen, ob das das Problem löst, aber immer noch nicht. – user440308

+0

Nun, ich habe nicht XML-Bitmap für den Fall wie Ihre versucht, aber die Optionen sehen vielversprechend aus. Der 9-Patch-Weg wird sicher funktionieren - ich habe das schon benutzt. –

+0

Hmm. Ich habe alle Möglichkeiten ausprobiert, die helfen könnten, aber ich denke, dass ich etwas falsch mache. Ich habe überall online gesucht und niemand scheint dieses Problem zu haben ... – user440308

2

Ich hatte ein ähnliches Problem und war mit einem 9patch. Das vollständige 9-Patch-Bild wurde als Hintergrund angezeigt, obwohl der Inhalt, an den es angehängt wurde, nicht so groß war (mit wrap_content). Ich bin mir nicht sicher, warum Android entschied, das vollständige Bild anzuzeigen, anstatt den Hintergrund zu skalieren, um den Inhalt anzupassen.

Allerdings habe ich das Problem behoben, indem ich mein Hintergrundbild verkleinert habe. Damit meine ich die Erhaltung der Ecken, aber die Verkleinerung der vertikalen und horizontalen Teile. Siehe die angehängten Bilder des Hintergrundrahmens, den ich zuvor hatte, und das Ergebnis der Größenanpassung.

alt text alt text

+0

Vielen Dank dafür. Ich verbrachte einige Stunden damit herauszufinden, warum mein 9patch-Bild eine Ansicht erzeugte, die viel höher war, als es mit wrap_content als height-Parameter hätte sein sollen. Interessanterweise scheint dieser Effekt geräteabhängig zu sein.Auf einem Nexus7 war die Ansichtshöhe sogar mit dem ursprünglichen großen Hintergrundbild korrekt, während auf einem Xperia-Strahl die Ansichtshöhe fast doppelt so groß war, wie es hätte sein sollen. Auf einem Xperia Mini und auf einem billigen Android Tablet mit Cyanogen Mod war der "Effekt" auch dort aber nicht so stark wie beim Xperia Ray. – Nantoka

0

ich auch mit diesem Problem konfrontiert. Wenn Sie festlegen, dass die Ressource des Hintergrunds zu klein ist, haben Sie möglicherweise Probleme mit dem Seitenverhältnis. Die Lösung, die ich fand, bestand darin, das Hintergrundbild in drei Teile aufzuteilen: oben, Mitte und unten. Jedes dieser Bilder ist ein Hintergrund von drei verschiedenen Layouts/ImageViews. Der mittlere Teil ist derjenige, der die "wrap_content" Eigenschaft enthält:

Top: bg_top

Mitte: bg_middle

Unten: enter image description here

Da die Größe Erhöhung des Inhalts, werden die Grenzen halten unbeeinflusst und die Mitte wird ebenso zunehmen (wie die ganze "Box"). Natürlich ist dies eine Lösung für den Fall, dass die Aufteilung des Hintergrundbildes sinnvoll ist.

Verwandte Themen