如何动态改变形状颜色?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我有

<?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服务调用返回的信息更改颜色。所以它可能是黄色或绿色或红色或任何取决于我从网络服务调用收到的颜色。

我怎样才能改变形状的颜色?基于这些信息?

提问于
用户回答回答于

你可以像这样修改

GradientDrawable bgShape = (GradientDrawable)btn.getBackground();
bgShape.setColor(Color.BLACK);
用户回答回答于

对我来说,它崩溃了,因为getBackground返回了一个GradientDrawable而不是一个ShapeDrawable。

所以我修改是这样的:

((GradientDrawable)someView.getBackground()).setColor(someColor);

扫码关注云+社区