我在drawable文件夹中有许多图标,并将它们的名称作为字符串保存。如何在动态生成的情况下,使用这些名称访问drawable文件夹并更改imageView(或任何视图)的背景?谢谢。
我在drawable文件夹中有许多图标,并将它们的名称作为字符串保存。如何在动态生成的情况下,使用这些名称访问drawable文件夹并更改imageView(或任何视图)的背景?谢谢。
这可以使用反射来完成:
String name = "your_drawable";
final Field field = R.drawable.getField(name);
int id = field.getInt(null);
Drawable drawable = getResources().getDrawable(id);
或者使用Resources.getIdentifier()
:
String name = "your_drawable";
int id = getResources().getIdentifier(name, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
然后在任一情况下使用此内容来设置可绘制对象:
view.setBackground(drawable)
int resId = getResources().getIdentifier("your_drawable_name","drawable",YourActivity.this.getPackageName());
Drawable d = YourActivity.this.getResources().getDrawable(resId);
可以这样做:
ImageView imageView = new ImageView(this);
imageView.setBackground(getResources().getDrawable(getResources().getIdentifier("name","id",getPackageName())));
试试这个:
public Bitmap getPic (int number)
{
return
BitmapFactory.decodeResource
(
getResources(), getResourceID("myImage_" + number, "drawable", getApplicationContext())
);
}
protected final static int getResourceID
(final String resName, final String resType, final Context ctx)
{
final int ResourceID =
ctx.getResources().getIdentifier(resName, resType,
ctx.getApplicationInfo().packageName);
if (ResourceID == 0)
{
throw new IllegalArgumentException
(
"No resource string found with name " + resName
);
}
else
{
return ResourceID;
}
}
int id = getResources().getIdentifier("name_of_resource", "id", getPackageName());
使用此ID,您可以像以前一样访问它(假设它是可绘制的):
Drawable drawable = getResources().getDrawable(id);
使用案例如果不在任何活动中,可以使用@FD_的示例
注意:
如果您不在任何活动中,则必须发送上下文参数才能使用“getResources()”或“getPackageName()”,而“getDrawable(id)”已过时,请改用getDrawer(int id, Theme theme)(主题可以为null)。
String name = "your_drawable";
int id = context.getResources().getIdentifier(name, "drawable",
context.getPackageName());
Drawable drawable = context.getResources().getDrawable(id, null);
view.setBackground(drawable)
还是view.setBackgroundResource(id)
或者其他什么方法? - Utku Soytaş