Android bitmap afbeeldingsgrootte in XML

In mijn XML-bestand gebruik ik bitmap als volgt

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

Hier overschrijdt de afbeeldingsbreedte van het pictogram het scherm.

Ik heb android:width=”100dp” geprobeerd en zo. Maar het werkt niet.

Compleet XML-bestand:

<?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>

Hoe kan ik de breedte en hoogte van de bovenstaande bitmap verkleinen?


Antwoord 1, autoriteit 100%

Alleen API 23 of hoger

Gebruik gewoon

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

in plaats daarvan

<item
    android:left="200dp"
    android:right="200dp">
    <bitmap
        android:src="@drawable/splash_background"
        android:gravity="center" />
</item>

Antwoord 2, autoriteit 68%

Hoewel er geen breedte- en hoogteparameters zijn voor bitmaps, kunt u de bitmapgrootte instellen met zwaartekracht en de breedte/hoogte van het item.

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

Je kunt de breedte en hoogte van het item instellen en de bitmap erin schalen met behulp van zwaartekracht.

Ik weet dat dit een oude vraag is, maar misschien vindt iemand hem nuttig.

WAARSCHUWING:

Zoals al vermeld in opmerkingen, werkt deze methode ALLEEN met API-niveau 23 (Android 6.0) en hoger.


Antwoord 3, autoriteit 33%

Als u de breedte en hoogte wilt verkleinen zodat deze op het scherm passen en u geen exacte afmetingen hoeft in te stellen, kunt u eenvoudig leften rightop het bovenliggende item. Dat voegt in wezen een marge toe rond de afbeelding, zodat deze minder ruimte in beslag neemt:

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

In het ideale geval moet u echter afbeeldingen van verschillende grootte uploaden voor elke schermresolutie (bijv. hdpi, xxhdpi) en dan hoeft u de grootte niet programmatisch in te stellen op allemaal. Je kunt de volledige lijst hierbekijken.


Antwoord 4, autoriteit 26%

deze gebruik ik om mijn mipmap naar mijn startscherm te vergroten.

<?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>

Antwoord 5, autoriteit 20%

Probeer het op deze manier te doen, dit werkte voor mij:

<?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>

Antwoord 6, autoriteit 7%

Van Android-ontwikkelaarszag ik dat er geen tag voor Bitmap XML waarmee u de grootte kunt wijzigen. U moet dit doen via enkele grafische toepassingen zoals GIMP. Zoals @Kevin Cooper al vertelde, moet je idealiter verschillende bronnensets (met verschillende formaten) maken voor verschillende schermtypen.

Maar u kunt het formaat toch wijzigen met de attributen width en height in ImageView, in plaats van een bitmap met een andere grootte te maken:

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:scaleType="center"
    android:src="@drawable/Icon" />

Als je deze afbeelding op andere plaatsen wilt hergebruiken, kun je een aparte stijl maken en deze opnieuw gebruiken:

// in styles.xml
<style name="Icon24x24">
    <item name="android:src">@drawable/Icon</item>
    <item name="android:gravity">center</item>
    <item name="android:layout_width">24dp</item>
    <item name="android:layout_height">24dp</item>
</style>
// in layout.xml
<ImageView style="@style/Icon24x24"/>

Een andere manier van hergebruik is mogelijk het maken van een apart lay-outbestand voor één ImageViewen vervolgens opnemen in andere lay-outs.

Als je deze bitmapbinnen de lagenlijst wilt gebruiken, raadpleeg dan het antwoord van @Kevin Cooper, aangezien hij suggereerde dat het mogelijk is om opvullingen toe te voegen aan layer list item:

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

En zoals @Nicolo ook al aangaf, vorm API 23, is het mogelijk om android:widthen android:height"in te stellen op item.


Antwoord 7, autoriteit 4%

Volledige oplossing kopieer en plak en verander het afbeeldingspad

 <?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <item
    android:gravity="center"
    android:width="286dp"
    android:height="176dp">
    <bitmap
        android:src="@drawable/logo"
        android:gravity="fill_horizontal|fill_vertical" />
   </item>
 </layer-list>

Antwoord 8, autoriteit 4%

dus ik heb dat opgelost door te typen:

<item
  android:height= "250dp"
  android:width= "250dp"
  android:gravity="center">
   <bitmap
    android:gravity="fill_horizontal|fill_vertical"
    android:src="@mipmap/ic_launcher"/>
</item>


Antwoord 9, autoriteit 2%

Ik heb het formaat van de afbeelding gewoon handmatig aangepast en het werkt voor mij


Antwoord 10

1.Stap 1: Voeg android:background=toe aan de Spinner/AppCompatSpinner

<androidx.appcompat.widget.AppCompatSpinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="@dimen/input_height"
            android:background="@drawable/shape_drop_down_normal"
            />
  1. Maak een shape_drop_down_normal.xmlin /drawable

2A) Als u een ic_spinner_dropdown.png tekenbare-bron heeft voor de Spinner-bitmap

shape_drop_down_normal.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:width="20dp"
        android:height="13dp"
        android:gravity="end|center_vertical">
        <bitmap
            android:src="@drawable/ic_spinner_dropdown"
            android:gravity="fill"
            android:mipMap="true"/>
    </item>
</layer-list>

2B) Als u een ic_spinner_dropdown_vector.xml vector tekenbarebron heeft voor de Spinner bitmap
shape_drop_down_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:width="20dp"
        android:height="13dp"
        android:gravity="end|center_vertical"
        android:drawable="@drawable/ic_spinner_dropdown_vector">
    </item>
</layer-list>
  1. Waarschuwing!

    android:width=”20dp”
    android:height=”13dp”

in lagenlijst API 23+ vereist,
gebruik

android:left="20dp"
android:right="13dp" 

voor lagere API-niveaus, of laat gewoon de breedte- en hoogtebeperkingen weg en zet de dp direct in vectortekenbaar (het werkt perfect voor alle API-niveaus).

Other episodes