动态改变形状的颜色

时间:2016-09-16 11:49:22

标签: java android xml colors shape

在将此标记为重复之前,请先阅读我的问题。

我有一个id为“矩形”的形状,如下所示:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rectangle">
    <padding android:left="2dp"
        android:top="2dp"
        android:right="2dp"
        android:bottom="2dp" />
    <corners android:radius="3dp" />
    <solid android:color="#ff5900" />
</shape>

我在我的cardview中使用此形状:

<View
    android:id="@+id/myrectangle"
    android:layout_width="15dp"
    android:layout_height="wrap_content"
    android:background="@drawable/rectangle"
    android:layout_alignBottom="@+id/desc" />

最后,我尝试在RVAdapter的{​​{1}}中设置颜色: (颜色为cardview,gd为View

Drawable

color = cv.findViewById(R.id.myrectangle); gd = color.getBackground(); if (omission.gd instanceof ShapeDrawable) { ((ShapeDrawable)omission.gd).getPaint().setColor(Color.parseColor(stundenplandata.getJSONObject(i).getString("color"))); } else if (omission.gd instanceof GradientDrawable) { ((GradientDrawable)omission.gd).setColor(Color.parseColor(stundenplandata.getJSONObject(i).getString("color"))); } else if (omission.gd instanceof ColorDrawable) { ((ColorDrawable)omission.gd).setColor(Color.parseColor(stundenplandata.getJSONObject(i).getString("color"))); } 等只是获取颜色的十六进制代码。

然而,当我这样做时,矩形的颜色不会改变,它实际上会变为白色(记住,它在xml文件中是橙色的)。

我的问题/错误是什么?

编辑:这是视图层次结构:

stundenplandata.getjsonobject

1 个答案:

答案 0 :(得分:0)

请尝试以下代码:

 GradientDrawable drawable = (GradientDrawable) myrectangle.getBackground();
            drawable.setColor(ContextCompat.getColor(context,stundenplandata.getJSONObject(i).getString("color")));
myrectangle.setBackground(drawable);