【发布时间】:2016-11-09 20:01:16
【问题描述】:
我有以下矢量可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="25dp"
android:viewportWidth="25"
android:viewportHeight="25">
<path
android:fillColor="#FFFFFF"
android:fillType="evenOdd"
android:strokeWidth="1"
android:pathData="M12.5,25 C19.4035594,25 25,19.4035594 25,12.5 C25,5.59644063 19.4035594,0 12.5,0
C5.59644063,0 0,5.59644063 0,12.5 C0,19.4035594 5.59644063,25 12.5,25 Z M12.5,24
C18.8512746,24 24,18.8512746 24,12.5 C24,6.14872538 18.8512746,1 12.5,1
C6.14872538,1 1,6.14872538 1,12.5 C1,18.8512746 6.14872538,24 12.5,24 Z M16,6
C17.6568542,6 19,7.34226429 19,8.99878564 L19,16.0012144 C19,17.6573979
17.6534829,19 16,19 C14.3431458,19 13,17.6577357 13,16.0012144 L13,8.99878564
C13,7.34260206 14.3465171,6 16,6 Z M14,16.0012144 C14,17.1052262 14.8952058,18
16,18 C17.1026267,18 18,17.1036857 18,16.0012144 L18,8.99878564 C18,7.89477378
17.1047942,7 16,7 C14.8973733,7 14,7.89631432 14,8.99878564 L14,16.0012144 Z
M8.33473905,12.5 C8.14415114,12.3451212 7.57820716,11.8273213
7.57820716,11.8273213 C6.80306599,11.0695455 6,10.0347728 6,9 C6,7 7,6 9,6 C11,6
12,7 12,9 C12,10.0347728 11.196934,11.0695455 10.4217928,11.8273213
C10.4217928,11.8273213 9.85584886,12.3451212 9.66526095,12.5
C9.85584886,12.6548788 10.4217928,13.1726787 10.4217928,13.1726787
C11.196934,13.9304545 12,14.9652272 12,16 C12,18 11,19 9,19 C7,19 6,18 6,16
C6,14.9652272 6.80306599,13.9304545 7.57820716,13.1726787 C7.57820716,13.1726787
8.14415114,12.6548788 8.33473905,12.5 Z M9.03460423,12 C10.1996214,11.0532638
11,9.74316 11,9 C11,7.55228475 10.4477153,7 9,7 C7.55228475,7 7,7.55228475 7,9
C7,9.74316 7.86958707,11.0532638 9.03460423,12 L8.96539577,13
C7.80037862,13.9467362 7,15.25684 7,16 C7,17.4477153 7.55228475,18 9,18
C10.4477153,18 11,17.4477153 11,16 C11,15.25684 10.1304129,13.9467362
8.96539577,13 L9.03460423,12 Z" />
</vector>
在 Android Studio 的预览选项卡上,它看起来像这样(这是需要的):
但是当我以编程方式将其设置为 ImageView 作为其源代码时:
imageMenuItem.setImageResource(R.drawable.keno);
看起来像这样:
ImageView 的 xml 代码很简单:
<ImageView
android:id="@+id/image_menu_item"
style="@style/UpperItemsImageLeftMenu"
app:srcCompat="@drawable/leftmenu_keno"
android:layout_width="@dimen/upper_item_image_dim_left_menu"
android:layout_height="@dimen/upper_item_image_dim_left_menu"
/>
深灰色是背景,设置在别处。有谁知道我该如何解决这个问题?
【问题讨论】:
-
根据我的经验,Vector Drawables 不支持
evenOdd填充规则,因此需要重新定向路径才能正确显示 developer.mozilla.org/en/docs/Web/SVG/Attribute/fill-rule -
@Duopixel 提出了填充规则是正确的,但我会添加更多细节。 VectorDrawable 默认填充规则是“非零”;更改填充规则仅在 API 24 中引入。所以你真的应该坚持“非零”尝试配置你的矢量图形软件来给你。部分链接:medium.com/@dineshbob10/…blog.stylingandroid.com/vectordrawable-fill-windings
-
@Duopixel @Lewis,你是对的。我从 xml 中删除了
android:fillType="evenOdd",预览向我展示了实心圆圈。非常感谢你!可惜你没有回答它,但评论它,因为我无法设置为正确答案。 -
@DevetiPutnik,只是给出一些提示而不是完整的答案:你的答案很棒! ??????
标签: android svg android-vectordrawable