android - objeto - photoshop center object
Cómo centrar el vector dibujable en la lista de capas sin escalar (2)
He estado luchando con el mismo problema. La única forma en que encontré para solucionar esto y evitar el dibujo para escalar fue establecer el tamaño dibujable y usar la gravedad para alinearlo:
<layer-list>
<item android:drawable="@color/grid_item_activated"/>
<item
android:gravity="center"
android:width="48dp"
android:height="48dp"
android:drawable="@drawable/ic_check_white_48dp"/>
</layer-list>
¡Espero eso ayude!
Estoy intentando usar un
VectorDrawable
en una
LayerList
sin escalar el vector.
Por ejemplo:
<layer-list>
<item android:drawable="@color/grid_item_activated"/>
<item android:gravity="center" android:drawable="@drawable/ic_check_white_48dp"/>
</layer-list>
El id
ic_check_white_48dp
definido como:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
</vector>
El efecto deseado es que el icono de verificación esté centrado en la capa dibujable, sin escala. El problema es que la lista de capas anterior hace que el icono de verificación se escale para adaptarse al tamaño de la capa.
Puedo producir el efecto deseado si reemplazo el vector dibujable con PNG para cada densidad y modifico la lista de capas como tal:
<layer-list>
<item android:drawable="@color/grid_item_activated"/>
<item>
<bitmap android:gravity="center" android:src="@drawable/ic_check_white_48dp"/>
</item>
</layer-list>
¿Hay alguna manera de hacer esto usando un
VectorDrawable
?
Me encontré con el mismo problema tratando de centrar los vectores dibujables en una lista de capas.
Tengo una solución alternativa, no es exactamente lo mismo, pero funciona, debe establecer un tamaño para todo el dibujo y agregar relleno al elemento del vector:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<size android:height="120dp" android:width="120dp"/>
<solid android:color="@color/grid_item_activated"/>
</shape>
</item>
<item android:top="24dp"
android:bottom="24dp"
android:left="24dp"
android:right="24dp"
android:drawable="@drawable/ic_check_white_48dp"/>
</layer-list>
El tamaño de la forma anterior establece el tamaño de todo el dibujo, 120dp en este ejemplo, el relleno en el segundo elemento, 24dp en este ejemplo, centra la imagen vectorial.
No es lo mismo que usar el
gravity="center"
pero es su forma de usar vectores en API 21 y 22.