首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何动态改变形状的颜色?

如何动态改变形状的颜色?
EN

Stack Overflow用户
提问于 2011-08-24 00:54:21
回答 10查看 133K关注 0票数 136

我有过

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
    <solid
       android:color="#FFFF00" />
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
</shape>

<TextView
    android:background="@drawable/test"
    android:layout_height="45dp"
    android:layout_width="100dp"
    android:text="Moderate"
/>

所以现在我想让这个形状根据我从web服务调用中得到的信息来改变颜色。因此,它可能是黄色、绿色、红色或其他颜色,这取决于我从web服务调用中接收到的颜色。

如何更改形状的颜色?基于这些信息?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-08-24 01:24:13

您可以像这样简单地修改它

代码语言:javascript
复制
GradientDrawable bgShape = (GradientDrawable)btn.getBackground();
bgShape.setColor(Color.BLACK);
票数 302
EN

Stack Overflow用户

发布于 2013-05-03 21:20:11

对我来说,它崩溃是因为getBackground返回的是GradientDrawable而不是ShapeDrawable

所以我把它修改成这样:

代码语言:javascript
复制
((GradientDrawable)someView.getBackground()).setColor(someColor);
票数 61
EN

Stack Overflow用户

发布于 2014-12-30 08:57:28

这对我来说很有效,使用初始的xml资源:

代码语言:javascript
复制
example.setBackgroundResource(R.drawable.myshape);
GradientDrawable gd = (GradientDrawable) example.getBackground().getCurrent();
gd.setColor(Color.parseColor("#000000"));
gd.setCornerRadii(new float[]{30, 30, 30, 30, 0, 0, 30, 30});
gd.setStroke(2, Color.parseColor("#00FFFF"), 5, 6);

以上操作的结果:http://i.stack.imgur.com/hKUR7.png

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

https://stackoverflow.com/questions/7164630

复制
相关文章

相似问题

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