嗨,我在xml中有一个可绘制的形状,它用作视图的背景。需要根据情况在代码中更改其颜色。

所以我在做

  ShapeDrawable d =  (ShapeDrawable) getResources().getDrawable(R.drawable.shape1);

  d.getPaint().setShader(sd1);


但是getDrawable返回一个渐变drawable,将其强制转换为ShapeDrawable会产生错误。

因此,如何在代码中获取shapeDrawable并修改其属性。

最佳答案

我能够通过将其转换为GradientDrawable而不是ShapeDrawable来解决此问题。

GradientDrawable shape = (GradientDrawable) getResources().getDrawable(R.drawable.shape1);

    shape.setColor(Color);


当我基于Holo.Dialog主题创建具有自定义样式的活动时,使用了此功能。

08-17 22:32