wake-up-neo.com

Hintergrundbildplatzierung

Ich versuche, mein lineares LinearLayout-Element (das in beiden Dimensionen auf fill_parent gesetzt ist) so einzustellen, dass es ein Hintergrundbild hat, das sich immer in der unteren linken Ecke des Bildschirms befindet, unabhängig von der Ausrichtung des Geräts. Es wäre ausgezeichnet, wenn Sie die Position des Hintergrundbilds auf eine bestimmte Weise festlegen könnten, z. B. die, die Sie mit css mit "background-position: left bottom;" Aber ich sehe keinen Weg, dies in Android zu erreichen. Gibt es eine Möglichkeit, dies zu tun?

Danke für die Hilfe.

36
Ryan

Sie müssen eine benutzerdefinierte Bitmap erstellen, die mit Ihrer Bitmap in einer XML-Datei gezeichnet werden kann (z. B. "res/drawables/my_drawable.xml").

<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:src="@drawable/my_png_file"
    Android:gravity="bottom|left" />

Legen Sie dann dieses Zeichenbare XML-Dokument als Hintergrund für Ihre Ansicht fest ("@ drawables/my_drawable") . Das XML-Zeichenformat ist auf der Android-Site sehr schlecht dokumentiert. Daher ist es definitiv kein leichtes Problem, das zu lösen allein.

79
Yoni Samlan

Wenn ein Vorteil gefunden wird, kann dies programmgesteuert durchgeführt werden: Das Bild passt zum Layout und ist nicht größer als es. Keine ideia warum.

Der Code: 

Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                R.drawable.image);
BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp);
bitmapDrawable.setGravity(Gravity.BOTTOM|Gravity.RIGHT);
LinearLayout layout = (LinearLayout) findViewById(R.id.background_root);
layout.setBackgroundDrawable(bitmapDrawable);
9
neteinstein

Meine Antwort ist nur eine Aktualisierung der obigen Antworten Wenn Sie XML für den Hintergrund verwenden, kann es zu Problemen im Seitenverhältnis kommen 

verwenden Sie also diesen Code

Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                R.drawable.image);
BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp);
  bitmapDrawable.setGravity(Gravity.BOTTOM| Gravity.RIGHT| Gravity.FILL_HORIZONTAL);
LinearLayout layout = (LinearLayout) findViewById(R.id.background_root);
layout.setBackgroundDrawable(bitmapDrawable);

Gravity.Fill_HORIZONTAL wird mit der Breite des Layouts passen, auf das Sie den Hintergrund anwenden. Sie können dies auch in der XML-Datei erwähnen. Wie ich bereits sagte, tritt das Bildverhältnis auf 

0
Chirag Joshi

Wickeln Sie Ihr LinearLayout in ein RelativeLayout und fügen Sie ihm eine ImageView hinzu. Mit Android: layout_alignParentBottom und Android: layout_alignParentLeft können Sie Ihr Bild links unten platzieren. 

<RelativeLayout
    Android:id="@+id/relativeLayout"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <ImageView
        Android:id="@+id/imageView"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentBottom="true"
        Android:layout_alignParentLeft="true"
        Android:src="@drawable/my_image" />

    <LinearLayout
        Android:id="@+id/linearLayout"
        ... >

Stellen Sie sicher, dass ImageView das erste Element von RelativeLayout ist, das das Bild im Hintergrund zeichnet.

0
sulai