3

我下面ImageButtonVectorDrawable上的ImageButton是丑陋

<ImageButton xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/fireButton" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/ic_whatshot_48px" 
    android:tint="@color/accent" 
    style="?android:attr/borderlessButtonStyle" 
    android:scaleType="fitCenter" 
    android:onClick="fire" /> 

ic_whatshot_48pxVectorDrawable

<?xml version="1.0" encoding="utf-8"?> 
<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:width="48dp" 
    android:height="48dp" 
    android:viewportWidth="48" 
    android:viewportHeight="48"> 

    <path 
     android:fillColor="#000000" 
     android:pathData="M27 1.34s1.48 5.3 1.48 9.6c0 4.12-2.7 7.47-6.83 
7.47s-7.25-3.34-7.25-7.47l.05-.72C10.43 15.03 8 21.23 8 28c0 8.84 7.16 16 16 
16s16-7.16 16-16c0-10.79-5.19-20.41-13-26.66zM23.42 38c-3.56 
0-6.45-2.81-6.45-6.28 0-3.25 2.09-5.53 5.63-6.24s7.2-2.41 9.23-5.15c.78 2.58 
1.19 5.3 1.19 8.07 0 5.29-4.3 9.6-9.6 9.6z" /> 
</vector> 

但对图像进行缩放,并且所迷离和丑陋。

Ugly VectorDrawable screenshot

这是为什么?这是VECTORDrawable,它应该很好,很顺利。

+0

我们可以看到'VectorDrawable'代码吗? – 2015-02-11 17:40:21

+1

也许这是因为您的SVG是48x48px? – Zielony 2015-02-11 17:43:14

+0

是的,你可以。我将它添加到问题中。我知道我可以改变'width','height' anbd视口,但我不知道应用程序在哪个屏幕上运行,所以我不能使用确切的数字。我想要Android来做到这一点。 :) – Pitel 2015-02-11 17:43:33

回答

1

也许现在回答这个问题为时已晚,但也可能有其他人有同样的问题。

问题是由于矢量定义中的宽度和高度。您将其设置为较低的值将其设置为较高的值,然后完成。

如果你想使用它的多屏幕尺寸,那么你需要做这样的事情:

<vector ... 
     android:width="@dimen/vector_size" 
     android:height="@dimen/vector_size" 
     .../> 

然后在res /值定义的:

<resources> 
    <dimen name="vector_size">24dp</dimen> 
</resources> 

欲了解更多信息为什么你需要给矢量的宽度和高度,请阅读:

Understanding Android's VectorDrawable properties

+0

这是不正确的。在ImageView中的srcCompat。你正在谈论默认大小。 – cesards 2016-10-12 11:21:59