programacion - Tamaño de imagen de mapa de bits de Android en XML
manual de programacion android pdf (5)
Aunque no hay parámetros de ancho y alto para el mapa de bits, puede establecer el tamaño del mapa de bits utilizando la gravedad y el ancho / alto del elemento.
<item
android:width="230dp"
android:height="70dp">
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/screen" />
</item>
Puede establecer el ancho y alto del elemento y escalar el mapa de bits dentro de él usando la gravedad.
Sé que esta es una pregunta antigua, pero tal vez alguien lo encuentre útil.
ADVERTENCIA:
Como ya se mencionó en los comentarios, este método SÓLO funciona con API nivel 23 (Android 6.0) y superior.
En mi archivo XML, estoy usando bitmap como el siguiente
<bitmap
android:src="@drawable/Icon"
android:gravity="center"/>
Aquí el ancho de la imagen del icono excede la pantalla.
Intenté Android: width = "100dp" y todo. Pero no está funcionando.
Archivo XML completo:
<?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>
¿Cómo puedo reducir el ancho y la altura del mapa de bits anterior?
De los desarrolladores de Android vi que no hay etiqueta para Bitmap XML que le permita cambiar su tamaño. Debe hacer esto a través de algunas aplicaciones gráficas como GIMP. Como ya dijo @Kevin Cooper, lo ideal sería crear diferentes conjuntos de recursos (con diferentes tamaños) para diferentes tipos de pantalla.
Pero aún puedes redimensionarlo usando atributos de ancho y alto en ImageView
, en lugar de crear un mapa de bits con diferentes tamaños:
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleType="center"
android:src="@drawable/Icon" />
Si desea reutilizar esta imagen en otros lugares, puede crear un estilo separado y reutilizarlo:
// 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"/>
Otra forma de reutilizar puede ser crear un archivo de diseño separado para un ImageView
y luego incluirlo en otros diseños.
Si desea utilizar este bitmap
de bitmap
dentro de la lista de capas, consulte la respuesta de @Kevin Cooper, ya que sugirió que es posible agregar rellenos al 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>
Y como @Nicolo también apuntó, desde API 23, es posible establecer android:width
y android:height"
en el elemento.
Intenta hacerlo de esta manera, esto funcionó para mí:
<item
android:left="200dp"
android:right="200dp">
<bitmap
android:src="@drawable/splash_background"
android:gravity="center" />
</item>
Si desea reducir el ancho y la altura para que encaje en la pantalla, y no necesita establecer dimensiones exactas, puede simplemente configurar left
y right
en el elemento principal. Eso esencialmente agregará un margen alrededor de la imagen por lo que ocupa menos espacio:
<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>
Idealmente, sin embargo, debería cargar imágenes de diferentes tamaños para cada resolución de pantalla (p. hdpi
, xxhdpi
, xxhdpi
) y luego no tendrá que establecer el tamaño de forma programática. Puedes ver la lista completa here .
Solo usa
<?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>
en lugar
<item
android:width="200dp"
android:height="200dp"
android:drawable="@drawable/splash_background"
android:gravity="center" />