web-dev-qa-db-fra.com

Android taille de l'image bitmap en XML

Dans mon fichier XML, j'utilise bitmap comme suit

<bitmap
    Android:src="@drawable/Icon"
    Android:gravity="center"/>

Ici, la largeur de l'image de l'icône dépasse l'écran.

J'ai essayé Android: width = "100dp" et tout. Mais ça ne marche pas.

Fichier XML complet:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <item>
      <shape Android:shape="rectangle">
            <stroke Android:width="3dp" Android:color="@color/black" />
            <solid Android:color="@color/bg_green" />
        </shape>
   </item>
   <item>
    <bitmap
        Android:src="@drawable/Icon"
        Android:gravity="center"/>
    </item>
</layer-list>

Comment puis-je réduire la largeur et la hauteur du bitmap ci-dessus?

47
Erma Isabel

Bien qu'il n'y ait pas de paramètres de largeur et de hauteur pour les images bitmap, vous pouvez définir la taille de l'image en utilisant la gravité et la largeur/hauteur de l'élément.

<item
    Android:width="230dp"
    Android:height="70dp">
    <bitmap
        Android:gravity="fill_horizontal|fill_vertical"
        Android:src="@drawable/screen" />
</item>

Vous pouvez définir la largeur et la hauteur d'un élément ainsi que l'échelle du bitmap à l'intérieur de celui-ci à l'aide de la gravité.

Je sais que c'est une vieille question, mais peut-être que quelqu'un le trouvera utile.

ATTENTION:

Comme déjà mentionné dans les commentaires, cette méthode fonctionne UNIQUEMENT avec les API de niveau 23 (Android 6.0) et plus.

37
Nicolo

Juste utiliser

<item
    Android:width="200dp"
    Android:height="200dp"
    Android:drawable="@drawable/splash_background"
    Android:gravity="center" />

au lieu

<item
    Android:left="200dp"
    Android:right="200dp">

    <bitmap
        Android:src="@drawable/splash_background"
        Android:gravity="center" />

</item>
26
MaxF

Si vous souhaitez réduire la largeur et la hauteur de manière à ce que l'écran s'adapte à l'écran et que vous n'ayez pas besoin de définir des dimensions exactes, vous pouvez simplement définir left et right sur l'élément parent. Cela va essentiellement ajouter une marge autour de l'image pour qu'elle prenne moins de place:

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item
        Android:left="20dp"
        Android:right="20dp">

        <bitmap
            Android:src="@drawable/Icon"
            Android:gravity="center" />

    </item>

</layer-list>

Dans l’idéal, vous devez toutefois télécharger des images de différentes tailles pour chaque résolution d’écran (par exemple, hdpi, xxhdpi), sans avoir à définir la taille du tout par programme. Vous pouvez voir la liste complète ici .

22
Kevin Cooper

Essayez de le faire de cette façon, cela a fonctionné pour moi:

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

  <item
    Android:width="30dp"
    Android:height="30dp"
    Android:gravity="center"
  >
        <bitmap
       Android:src="@drawable/screen"/>
  </item>

</layer-list>
12

celui que j’utilise pour redimensionner mon mipmap sur mon écran de lancement.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:opacity="opaque">
    <item Android:drawable="@color/colorPrimary"/>
    <item
        Android:width="200dp"
        Android:height="200dp"
        Android:gravity="center">
        <bitmap
            Android:gravity="fill"
            Android:src="@mipmap/ic_launcher"
            Android:mipMap="true"/>
    </item>
</layer-list>
1
Gilbert Arafat

Je viens de redimensionner l'image manuellement alors ça marche pour moi

0
amorenew