如何从动态创建(在Java中)layer-list/LayerDrawable中获取Android资源ID?

sca*_*ien 4 android layer drawable resource-id

这个问题/答案帖子中的"解决方案#2(动态)":

在android中覆盖两个图像以设置imageview

非常接近我想做的事情,即动态创建图层列表(对于状态栏通知图标,我想在图层中构建我的图标),但通知API中的图标分配需要资源ID(我想从服务中调用).

我无法弄清楚如何构建动态构建图层列表而不构建数百个图层列表.xml文件(对于我希望能够显示的各种图标组合).Daniel的"解决方案#1"非常适用于静态.xml文件,但我正在寻找一种更优雅,更动态的解决方案.

在上面的帖子中,代码片段:

  Resources r = getResources();

  Drawable[] layers = new Drawable[2]; 

  layers[0] = r.getDrawable(R.drawable.t);

  layers[1] = r.getDrawable(R.drawable.tt);

  LayerDrawable layerDrawable = new LayerDrawable(layers);
Run Code Online (Sandbox Code Playgroud)

似乎是我想要的,但我不知道或不了解如何将新的layerDrawable"分配"到我的通知图标(它获取资源ID).

感谢所有... stackoverflow是一个很好的资源!

has*_*ian 11

使用" getIdentifier "来获取它.假设我在"/ res/drawable /"中有一个文件bug.png,所以我使用以下代码获取其ResourceID:

int resID = getResources().getIdentifier("org.anddev.android.testproject:drawable/bug", null, null);
Run Code Online (Sandbox Code Playgroud)

// 要么

int resID = getResources().getIdentifier("bug", "drawable", "org.anddev.android.testproject");      
Run Code Online (Sandbox Code Playgroud)

参考:
anddev.org