web-dev-qa-db-fra.com

Placement de l'image de fond

J'essaie de définir dans mon élément racine LinearLayout (qui est défini sur fill_parent dans les deux dimensions) une image d'arrière-plan toujours située dans le coin inférieur gauche de l'écran, quelle que soit l'orientation du périphérique. Ce serait excellent s’il existait un moyen de définir la position de l’image d’arrière-plan, comme celle que vous pouvez utiliser avec css, en utilisant "background-position: left bottom;" mais je ne vois pas comment y parvenir dans Android. Y a-t-il un moyen de faire cela?

Merci pour l'aide.

36
Ryan

Vous devrez créer une image bitmap personnalisée pouvant être dessinée avec votre image 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 dessinable comme arrière-plan de votre vue ("@ drawables/my_drawable") . Le format XML dessinable est très mal documenté sur le site Android, ce n'est donc pas un problème facile à résoudre. par toi-même.

79
Yoni Samlan

Si vous trouvez un avantage à le faire par programme: l’image correspond à la présentation au lieu d’être plus grande que celle-ci. 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);
9
neteinstein

Ma réponse est juste une mise à jour des réponses ci-dessus Si vous utilisez XML pour l’arrière-plan, un problème de rapport de format peut apparaître 

alors utilisez ce 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 s'adaptera à la largeur de la mise en page sur laquelle vous appliquez l’arrière-plan. Vous pouvez également le mentionner dans un fichier XML, mais comme je l’ai dit, cela se produira. Problème de Image Ratio 

0
Chirag Joshi

Enveloppez votre LinearLayout dans un RelativeLayout et ajoutez-lui un ImageView. Avec 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.

0
sulai