36 votes

Placement de l'image de fond

J'essaie de définir mon élément Root LinearLayout (qui est défini sur fill_parent dans les deux dimensions) pour avoir une image de fond qui est toujours située dans le coin inférieur gauche de l'écran, quelle que soit l'orientation de l'appareil. Ce serait une excellente chose s'il existait un moyen de définir la position de l'image d'arrière-plan, comme on peut le faire avec css en utilisant "background-position : left bottom ;", mais je ne vois pas de moyen d'y parvenir dans Android. Existe-t-il un moyen de le faire ?

Merci pour votre aide.

81voto

Yoni Samlan Points 21748

Vous devrez créer une table de dessin personnalisée avec votre bitmap dans un fichier XML (par exemple "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" />

Et ensuite, définissez ce xml drawable comme arrière-plan de votre vue ("@drawables/my_drawable"). Le format drawable XML est très mal documenté sur le site d'Android, ce n'est donc pas un problème facile à résoudre par soi-même.

9voto

NeTeInStEiN Points 7331

J'ai trouvé un avantage à faire cela de manière programmatique : l'image s'adapte à la mise en page au lieu d'être plus grande qu'elle. Aucune idée pourquoi.

Le 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);

1voto

sulai Points 1264

Transformez votre LinearLayout en RelativeLayout et ajoutez-y une ImageView. En utilisant Android:layout_alignParentBottom et Android:layout_alignParentLeft, vous pouvez placer votre image en bas à gauche.

<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"
        ... >

Assurez-vous que ImageView est le premier élément de RelativeLayout pour dessiner l'image en arrière-plan.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X