Android以编程方式将XML形状设置为可绘制

时间:2012-06-08 23:29:27

标签: android xml resources drawable shape

您好我有一个可绘制的myshape.xml,它包含一个<shape>,我无法将android:id设置为形状。

在我的代码中,我想使用

为此文件设置视图的背景

catAll.setBackgroundDrawable(getResources().getDrawable(R.id......???));

其中myshape.xml没有显示在我的R文件中,因为它没有id。我无法将id设置为object。

在我的XML中,我只需输入可绘制的资源名称即可设置形状。但我需要以编程方式执行此操作。

2 个答案:

答案 0 :(得分:38)

你自己不需要得到可绘制的。请改用:

catAll.setBackgroundResource(R.drawable.myshape);

为了将来参考,如果你希望获得drawable,请记住,drawables存在于 R.drawable 命名空间中。所以你的代码将成为:

getResources().getDrawable(R.drawable.myshape);

这类似于您在XML中所做的事情:

@drawable/myshape

而不是

@id/myshape

答案 1 :(得分:0)

这个问题真的很老,但谷歌首先点击了对该线程的引用。

所以 getDrawable(id) 已被弃用。

简短的解决方案(kotlin)

yourView.background = ContextCompat.getDrawable(context, R.drawable.your_ressource_id)

更多信息,请阅读:https://stackoverflow.com/a/29146895/4420355