如何将vector绘制在层列表中而不缩放

我试图在VectorDrawable中使用LayerList而不缩放vector。 例如:

 <layer-list> <item android:drawable="@color/grid_item_activated"/> <item android:gravity="center" android:drawable="@drawable/ic_check_white_48dp"/> </layer-list> 

可绘制的ic_check_white_48dp id定义如下:

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

所希望的效果是将检查图标居中绘制在图层上,而不缩放。 问题是,上面的图层列表会导致检查图标被缩放以适合图层大小。

可以产生所需的效果,如果我用每个密度的PNGreplacevector绘图,并修改层列表如下:

 <layer-list> <item android:drawable="@color/grid_item_activated"/> <item> <bitmap android:gravity="center" android:src="@drawable/ic_check_white_48dp"/> </item> </layer-list> 

有什么办法可以做到这一点使用VectorDrawable

一直在努力解决同样的问题。 我发现解决这个问题的唯一办法就是设置drawable的大小,并用重力来alignment:

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

希望能帮助到你!

我遇到了同样的问题,试图将向量绘制在分层列表上。

我有一个解决方法,它不完全相同,但它的工作原理,你需要设置整个绘制的大小,并添加填充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> 

上面的形状的大小设置整个绘图的大小,在本例中为120dp,在本例中为24dp的第二个项目的填充将vector图像居中。

它与使用gravity="center"但是它在API 21和22中使用vector的工作方式并不相同。