25

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

在我的代码中,我想将视图的背景设置为此文件使用

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

其中 myshape.xml 没有出现在我的 R 文件中,因为它没有 id。我不能将 id 设置为对象。

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

4

2 回答 2

45

您不需要自己获取可绘制对象。改用这个:

catAll.setBackgroundResource(R.drawable.myshape);

为了将来参考,如果您确实希望获得可绘制对象,请记住可绘制对象存在于R.drawable命名空间中。所以你的代码会变成:

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

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

@drawable/myshape

代替

@id/myshape
于 2012-06-08T23:30:42.050 回答
0

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

所以getDrawable(id)被弃用了。

简短的解决方案(科特林)

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

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

于 2021-04-23T08:29:53.000 回答