web-dev-qa-db-fra.com

Ajouter une image de fond à la forme en XML Android

Comment ajoutez-vous une image de fond à une forme? Le code que j'ai essayé ci-dessous mais sans succès:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" Android:padding="10dp">
//here is where i need to set the image
<solid Android:color="@drawable/button_image"/>
    <corners
     Android:bottomRightRadius="5dp"
     Android:bottomLeftRadius="5dp"
     Android:topLeftRadius="5dp"
     Android:topRightRadius="5dp"/>
 </shape>
132
DevC

Utilisez les instructions suivantes layerlist:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <item>
        <shape Android:shape="rectangle" Android:padding="10dp">
            <corners
                 Android:bottomRightRadius="5dp"
                 Android:bottomLeftRadius="5dp"
                 Android:topLeftRadius="5dp"
                 Android:topRightRadius="5dp"/>
         </shape>
   </item>
   <item Android:drawable="@drawable/image_name_here" />
</layer-list>
190
vipul mittal

J'ai utilisé ce qui suit pour une image pouvant être dessinée avec un fond circulaire.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="oval">
            <solid Android:color="@color/colorAccent"/>
        </shape>
    </item>
    <item
        Android:drawable="@drawable/ic_select"
        Android:bottom="20dp"
        Android:left="20dp"
        Android:right="20dp"
        Android:top="20dp"/>
</layer-list>

Voici à quoi cela ressemble

enter image description here

J'espère que ça aide quelqu'un.

177
Ray Hunter

C'est une forme de cercle avec une icône à l'intérieur:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:drawable="@drawable/ok_icon"/>
    <item>
        <shape
                Android:shape="oval">
            <solid Android:color="@color/transparent"/>
            <stroke Android:width="2dp" Android:color="@color/button_grey"/>
        </shape>
    </item>
</layer-list>
20
anagaf

c'est une image de coin

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">

<item Android:drawable="@drawable/img_main_blue"
    Android:top="5dp"
    Android:bottom="5dp"
    Android:right="5dp"
    Android:left="5dp"/>

<item>
<shape Android:shape="rectangle" Android:padding="10dp">
        <corners Android:radius="10dp"/>
        <stroke Android:width="5dp"
            Android:color="@color/white"/>
</shape>

</item>

</layer-list>
5
Mohsen Mdb

J'ai utilisé ce qui suit pour une image dessinable avec une bordure.

Commencez par créer un fichier .xml avec ce code dans un dossier pouvant être dessiné:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
    <shape Android:shape="oval">
        <solid Android:color="@color/orange"/>
    </shape>
</item>
<item
    Android:top="2dp"
    Android:bottom="2dp"
    Android:left="2dp"
    Android:right="2dp">
    <shape Android:shape="oval">
        <solid Android:color="@color/white"/>
    </shape>
</item>
<item
    Android:drawable="@drawable/messages" //here messages is my image name, please give here your image name.
    Android:bottom="15dp"
    Android:left="15dp"
    Android:right="15dp"
    Android:top="15dp"/>

Deuxièmement, créez un fichier .xml de vue dans le dossier de présentation et appelez le fichier .xml ci-dessus de cette façon.

<ImageView
   Android:id="@+id/imageView2"
   Android:layout_width="wrap_content"
   Android:layout_height="wrap_content"
   Android:src="@drawable/merchant_circle" />  // here merchant_circle will be your first .xml file name
4
Masum

Voici un autre moyen très simple d’obtenir une forme personnalisée pour votre image (Image View). Cela peut être utile pour quelqu'un. C'est juste un code à une seule ligne.

Vous devez d’abord ajouter une dépendance:

dependencies {
    compile 'com.mafstech.libs:mafs-image-shape:1.0.4'   
}

Et ensuite, écrivez une ligne de code comme celle-ci:

Shaper.shape(context, 
       R.drawable.your_original_image_which_will_be_displayed, 
       R.drawable.shaped_image_your_original_image_will_get_this_images_shape,
       imageView,
       height, 
       weight);   
1
Mafujul