带参数的Android可绘制

带参数的Android可绘制,android,Android,有可能有这样的东西吗 Drawable myshape = ???.getDrawableWithParameters(R.drawable.myshape, 0x00ff00); drawable/myshape.xml <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="{0}

有可能有这样的东西吗

Drawable myshape = ???.getDrawableWithParameters(R.drawable.myshape, 0x00ff00);
drawable/myshape.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">

    <solid android:color="{0}" />
</shape>

如果您按照示例中所示的方式创建一个
形状
,那么它将作为一个图形进行访问

如果查看文档(上面的链接),您可以看到所有函数,您可以从
GradientDrawable
对象访问。您也可以稍后使用此对象以编程方式设置背景和边框颜色及宽度


我不能100%确定,每次用xml创建形状时,都会得到一个
GradientDrawable
。我需要自己修改形状上的一些属性,并在尝试转换到其他类型的
Drawable
s

时发现ClassCastExceptions,这与形状无关。它可以是一个图层列表。参数就是我所要求的。如果有一种方法可以像在Strings中一样在drawable中传递参数,您是否希望仅使用其id和您喜欢的参数将颜色和大小等参数传递给drawable?不,我认为那是不可能的。这将违反oop原则,每个java开发人员都应该遵循这些原则(在我看来),而且完全没有必要,因为所有这些可绘制的子类都有一个非常友好的接口来处理这些事情
GradientDrawable d = (GradientDrawable) getResources().getDrawable(R.drawable.yourid);