In meiner XML-Datei verwende ich Bitmap wie folgt
<bitmap
android:src="@drawable/Icon"
android:gravity="center"/>
Hier überschreitet die Bildbreite des Symbols den Bildschirm.
Ich habe Android ausprobiert: width = "100dp" und alles. Aber es funktioniert nicht.
Vollständige XML-Datei:
<?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>
Wie kann ich die Breite und Höhe der obigen Bitmap reduzieren?
Antworten:
Von Android-Entwicklern habe ich gesehen, dass es kein Tag für Bitmap XML gibt, mit dem Sie die Größe ändern können. Sie müssen dies über einige Grafikanwendungen wie GIMP tun. Wie @ Kevin Cooper bereits sagte, müssen Sie im Idealfall verschiedene Ressourcensätze (mit unterschiedlichen Größen) für unterschiedliche Bildschirmtypen erstellen.
Sie können die Größe jedoch mithilfe der Attribute width und height in ändern
ImageView
, anstatt eine Bitmap mit unterschiedlicher Größe zu erstellen:<ImageView android:layout_width="50dp" android:layout_height="50dp" android:scaleType="center" android:src="@drawable/Icon" />
Wenn Sie dieses Bild an anderen Stellen wiederverwenden möchten, können Sie einen separaten Stil erstellen und wiederverwenden:
// 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"/>
Eine andere Möglichkeit der Wiederverwendung besteht darin, eine separate Layoutdatei für eine zu erstellen
ImageView
und diese dann in andere Layouts aufzunehmen.Wenn Sie dies
bitmap
innerhalb der Ebenenliste verwenden möchten, lesen Sie bitte die Antwort von @ Kevin Cooper, da er vorgeschlagen hat, dass es möglich ist, Polsterungen hinzuzufügen zulayer 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>
Und wie @Nicolo auch darauf, Form - API 23, ist es möglich, Satz
android:width
undandroid:height"
Punkt.quelle
Benutz einfach
<item android:width="200dp" android:height="200dp" android:drawable="@drawable/splash_background" android:gravity="center" />
stattdessen
<item android:left="200dp" android:right="200dp"> <bitmap android:src="@drawable/splash_background" android:gravity="center" /> </item>
quelle
Obwohl es für Bitmap keine Parameter für Breite und Höhe gibt, können Sie die Bitmap-Größe mithilfe der Schwerkraft und der Breite / Höhe des Elements festlegen.
<item android:width="230dp" android:height="70dp"> <bitmap android:gravity="fill_horizontal|fill_vertical" android:src="@drawable/screen" /> </item>
Sie können die Breite und Höhe des Elements festlegen und die Bitmap mithilfe der Schwerkraft skalieren.
Ich weiß, dass dies eine alte Frage ist, aber vielleicht findet es jemand nützlich.
WARNUNG:
Wie bereits in den Kommentaren erwähnt, funktioniert diese Methode NUR mit API Level 23 (Android 6.0) und höher.
quelle
android:gravity="center"
dem Element jedoch ein Attribut hinzufügen .Wenn Sie die Breite und Höhe reduzieren wollen , so dass es auf dem Bildschirm passt, und Sie brauchen nicht maßgenau einzustellen, können Sie einfach eingestellt
left
undright
auf dem übergeordneten Element. Dadurch wird im Wesentlichen ein Rand um das Bild hinzugefügt, sodass weniger Platz benötigt wird:<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>
Im Idealfall sollten Sie jedoch Bilder unterschiedlicher Größe für jede Bildschirmauflösung (z. B. ) hochladen
hdpi
,xxhdpi
und dann müssen Sie die Größe überhaupt nicht programmgesteuert einstellen. Die vollständige Liste finden Sie hier .quelle
android:gravity="center"
, verschwindet das Bild unabhängig von den Rändern immer noch vom Bildschirm.Diese verwende ich, um die Größe meiner Mipmap auf meinem Startbildschirm zu ändern.
<?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>
quelle
Versuchen Sie es so, das hat bei mir funktioniert:
<?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>
quelle
Ich habe das Bild nur manuell in der Größe geändert, dann funktioniert es für mich
quelle
Komplette Lösung Kopieren Sie einfach das Einfügen und ändern Sie den Bildpfad
<?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>
quelle