我尝试从Vector Asset Studio中的Material Vector包导入一些图标。
但他们带着填充物。
为什么会发生这种情况,如何将其删除?
这很不方便,因为这意味着如果我希望我的图标在XML中为17dp x 17dp,那么我需要设置它超过17x17以弥补填充。
答案 0 :(得分:8)
您可以缩放一个可以删除额外空间的矢量。这可以使用group
标记。只需修改vector xml文件即可。
这
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,4l-1.41,1.41L16.17,11H4v2h12.17l-5.58,5.59L12,20l8,-8z" />
</vector>
到
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<group
android:pivotX="12"
android:pivotY="12"
android:scaleX="1.5"
android:scaleY="1.5">
<path
android:fillColor="#FF000000"
android:pathData="M12,4l-1.41,1.41L16.17,11H4v2h12.17l-5.58,5.59L12,20l8,-8z" />
</group>
</vector>
结果
答案 1 :(得分:5)
您可以通过设置VectorDrawables
{{1}来调整.SVG
源图像(.PSD
,ImageViews
中可能包含的任何“隐式”填充}到适当的值,以便它可以处理秘密包含在android:scaleType
源图像中的填充。您还需要设置VectorDrawables
。
例如,假设您的android:adjustViewBounds="true"
在显示时在图像的开头有一些非常烦人的VectorDrawable
。您不知道为什么会这样,因为您没有在padding
上设置任何android:paddingStart
...您需要做的是将ImageView
ImageViews
设置为{{ 1}}和android:scaleType
到fitStart
。
<强> TL;博士强>
调整android:adjustViewBounds
true
以处理ImageViews
源文件(android:scaleType
,VectorDrawable
)中包含的任何“隐式”填充。同时设置.SVG
。
快速示例:
.PSD
这将删除android:adjustViewBounds="true"
开头的令人讨厌的“隐式”填充。
注意:根据您的渲染需求调整<ImageView android:id="@+id/vectorDrawable_imageView"
<!--Other ImageView settings-->
android:adjustViewBounds="true"
android:scaleType="fitStart"
app:srcCompat="@drawable/vector_with_implicit_padding_at_start"
/>
。
答案 2 :(得分:2)
此填充位于某些图标上,因此所有图标都可以正确对齐。例如,如果在该对话框中,您选择ic_3d_rotation_24dp
,您将看到图标一直到边界的边缘。
PS如果你的目标是拥有all your sizes be a multiple of 8dp,那么事情会顺利排列并且看起来很棒。
答案 3 :(得分:1)
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="28"
android:viewportHeight="28">
<group
android:translateX="2"
android:translateY="2">
<path
android:fillColor="#8A333333"
android:pathData="M13.12,2.06L7.58,7.6c-0.37,0.37 -0.58,0.88 -0.58,1.41V19c0,1.1 0.9,2 2,2h9c0.8,0 1.52,-0.48 1.84,-1.21l3.26,-7.61C23.94,10.2 22.49,8 20.34,8h-5.65l0.95,-4.58c0.1,-0.5 -0.05,-1.01 -0.41,-1.37 -0.59,-0.58 -1.53,-0.58 -2.11,0.01zM3,21c1.1,0 2,-0.9 2,-2v-8c0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2v8c0,1.1 0.9,2 2,2z" />
</group>
</vector>
android:viewportWidth + = android:translateX * 2(填充开始/结束)
android:viewportHeight + = android:translateY * 2(填充顶部/底部)