Lee*_*eem 37 android android-widget android-ndk android-emulator android-layout
如果我将图像名称作为变量,如下所示:
var imageName = SERVICE.getImg();
Run Code Online (Sandbox Code Playgroud)
然后,我怎么能得到资源R.drawable.????,我试过R.drawable[imageName],但它失败了.有什么建议?
nic*_*ild 52
int id = getResources().getIdentifier(imageName, type, package);
Run Code Online (Sandbox Code Playgroud)
这将获取您要查找的资源的ID. 有了它,您就可以从R类访问资源.
仅使用name参数:
您还可以使用以下格式在"name"参数中包含所有3个信息:"package:type/image_name"类似于:
int id = getResources().getIdentifier("com.my.app:drawable/my_image", null, null);
Run Code Online (Sandbox Code Playgroud)
当您使用不能或不想改变getIdentifier()调用方式的外部组件或库时,这非常有用.例如:AOSP Launcher3
小智 26
试试这个:
int id = getResources().getIdentifier(imageName, "drawable", getPackageName());
Run Code Online (Sandbox Code Playgroud)
xan*_*ndy 12
你需要反思.
假设您有R.drawable.image1,如果您想通过字符串名称"image1"访问它,以下应该工作:
String Name = "image1";
int id = R.drawable.class.getField(Name).getInt(null);
Run Code Online (Sandbox Code Playgroud)
但是请注意它只获得图像的Id,你仍然需要inflater从中得到实际的drawable.
| 归档时间: |
|
| 查看次数: |
20621 次 |
| 最近记录: |