从SVG设置图层列表项

时间:2016-08-20 15:47:55

标签: android svg layer-list

我有一个有趣的问题。

<layer-list>
        <item>
            <shape android:shape="oval">
                <size android:width="@dimen/cb_shape_size" android:height="@dimen/cb_shape_size"/>
                <solid android:color="@color/cb_unchecked_solid"/>
                <stroke android:width="@dimen/cb_shape_stroke"
                        android:color="@color/cb_checked_stroke"/>
            </shape>
        </item>
        <item android:drawable="@drawable/main_cb_gps_off"
              android:gravity="center"/>
    </layer-list>

main_cb_gps_off 是一个svg文件。 预览在Android Studio中喜欢这样: enter image description here 但是当我在手机中运行项目时,视图就像这样:Android4.4.2: enter image description here 当我在Android6.0的手机中运行该项目时,该视图与Android Studio的预览相同。 然后在同一时间,我发现:

<layer-list>
            <item android:drawable="@drawable/main_cb_gps_off"
                  android:gravity="center"/>
        </layer-list>

此代码在Android4.4.2中运行,svg文件的大小正常。 所以我不知道为什么当“图层列表”有两个项目时,svg文件的siez会变大。我想知道。任何解决方案?

3 个答案:

答案 0 :(得分:1)

您可以在SVG xml文件中设置大小,如果您将其大小声明为100dp的宽度和高度,则图层列表将使用该值来绘制您的图标。

如果需要增加或减小大小,请在xml文件中进行。

答案 1 :(得分:0)

我遇到了同样的问题,我在<FrameLayout>中使用了两个单独的ImageView android:layout_gravity="center"

答案 2 :(得分:0)

如果您在drawable中使用layer-list,则会缩放它以适合其所在的视图。

来自文档:

  

缩放所有可绘制项目以适合包含视图的大小,   默认情况下。因此,将图像放在不同的图层列表中   位置可能会增加视图的大小,一些图像缩放为   合适的。

为避免缩放,您必须使用bitmap

  

要避免缩放列表中的项目,请使用内部的bitmap元素   item元素指定drawable并定义重力   不能缩放的东西,例如&#34; center&#34;。

来自:https://developer.android.com/guide/topics/resources/drawable-resource#LayerList