如何将String转换为Drawable

Utk*_*taş 7 android android-drawable android-background

我在drawable文件夹中有很多图标,我的名字是String.如何访问drawable文件夹并更改背景imageView(或任何视图)动态使用这些名称.谢谢

FD_*_*FD_ 25

这可以使用反射来完成:

String name = "your_drawable";
final Field field = R.drawable.getField(name);
int id = field.getInt(null);
Drawable drawable = getResources().getDrawable(id);
Run Code Online (Sandbox Code Playgroud)

或使用Resources.getIdentifier():

String name = "your_drawable";
int id = getResources().getIdentifier(name, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
Run Code Online (Sandbox Code Playgroud)

然后在任何一种情况下使用它来设置drawable:

view.setBackground(drawable)
Run Code Online (Sandbox Code Playgroud)


小智 7

int resId = getResources().getIdentifier("your_drawable_name","drawable",YourActivity.this.getPackageName());
Drawable d = YourActivity.this.getResources().getDrawable(resId);
Run Code Online (Sandbox Code Playgroud)


nik*_*kis 5

它可以这样做:

ImageView imageView = new ImageView(this);
imageView.setBackground(getResources().getDrawable(getResources().getIdentifier("name","id",getPackageName())));
Run Code Online (Sandbox Code Playgroud)