首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式更改向量布局的填充颜色或strokeColor

以编程方式更改向量布局的填充颜色或strokeColor
EN

Stack Overflow用户
提问于 2016-12-01 21:56:51
回答 1查看 1.2K关注 0票数 0

使用编程方式更改笔画或填充颜色。是否可以以编程方式更改向量的填充颜色,但不能更改笔画颜色。

vector_icon.xml

代码语言:javascript
复制
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">

    <path
        android:strokeColor="#FF000000"
        android:strokeWidth="0.8"
        android:strokeAlpha="0.5"
        android:strokeLineJoin="round"
        android:strokeLineCap="round"
        android:strokeMiterLimit="1"
        android:pathData="M12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.89,2 2,2zM18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,2v1h16v-1l-2,-2z"/>

</vector>

图像视图,我在那里使用矢量绘图。

代码语言:javascript
复制
   <ImageView
                            android:id="@+id/ivNotification"
                            android:layout_width="@dimen/navigation_icon_size"
                            android:layout_height="@dimen/navigation_icon_size"
                            android:scaleType="fitXY"
                            android:src="@drawable/vector_icon_notification"/>

我试图将VectorDrawable转换为GradientDrawable,但它会抛出类强制执行。

代码语言:javascript
复制
GradientDrawable gdFavourite = (GradientDrawable) ivFavourite.getDrawable();
                gdFavourite.setStroke(1, colorPrimary);
                gdFavourite.setColor(colorPrimary);
                tvFavourite.setTextColor(colorPrimary);

java.lang.ClassCastException:不能将android.graphics.drawable.VectorDrawable转换为android.graphics.drawable.LayerDrawable

EN

回答 1

Stack Overflow用户

发布于 2016-12-01 22:07:52

在这里您没有太多的选项,您只需要接受这样一个事实:ivFavourite.getDrawable();返回VectorDrawable,它不允许您通过代码更改Storke。

您可以看到这个类的完整文档这里

解决这个问题的一个可能的解决方案是从其他xml获取VectorDrawable,并通过调用:ivFavourite.setBackgroundDrawable(myVectorDrawable)来覆盖存在的xml。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40921112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档