Android Vector Asset Studio为一些矢量图像提供额外的填充

Guy*_*Guy 10 android android-layout

我正在尝试从Vector Asset Studio中的Material Vector包导入一些图标.

但他们带有填充物.

在此输入图像描述

为什么会发生这种情况,如何将其删除?

这是不方便的,因为这意味着如果我希望我的图标是XML格式的17dp x 17dp,那么我需要设置它超过17x17以弥补填充.

yoA*_*ex5 16

您可以缩放一个将删除额外空间的向量.这可以使用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>
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述

  • 很好的解决方案,我喜欢它,因为它不需要您更改 ImageView,只需要更改源可绘制对象。另外,它似乎也适用于亚马逊设备,这些设备对矢量绘图非常挑剔。 (2认同)
  • 对我来说,这只是让图像变大,内部填充仍然存在。 (2认同)

Sak*_*boy 6

您可以通过将your设置为适当的值来调整VectorDrawables源图像(.SVG.PSD)中可能包含的任何“隐式”填充,ImageViews android:scaleType以便它可以处理VectorDrawables源图像中秘密包含的填充。您还需要设置android:adjustViewBounds="true"

例如,假设您在显示图像时在图像的开始处VectorDrawable确实有些烦人padding。您不知道为什么会出现它,因为您没有android:paddingStartImageView... 上设置任何内容。您需要将ImageViews android:scaleTypeto fitStartandroid:adjustViewBoundsto 设置为true

tl; dr

调整你的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"
/>
Run Code Online (Sandbox Code Playgroud)

这将消除您开始时讨厌的“隐式”填充VectorDrawable

注意:android:scaleType根据您的渲染需要调整。


Vit*_*han 5

<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>
Run Code Online (Sandbox Code Playgroud)

android:viewportWidth += android:translateX * 2(填充开始/结束)

android:viewportHeight += android:translateY * 2(填充顶部/底部)