对于标题感到抱歉,描述了我想要做的事情。我总是把这个问题作为一个整体来自Java,但是现在,它专门用于Android。让我们说我正在解析一个API并获得这个特殊字符串,让我们说"clear"
。在我的drawable中,我有一个clear.jpg
我想以编程方式设置为ImageView。这不是困难的部分。我想知道的是,如果有一个快速的方法,我可以使用变量名称调用.jpg?我知道我可以轻松地制作不同的if语句,例如:
if(string == "clear")
{
//setImageView to drawable/clear
}
但无论如何我可以做一些事情,比如
//setImageView to drawable/string
字符串是否清晰?我知道它显然会在drawable中寻找一个字符串,但无论如何我能做我所描述的内容吗?我只是一个普遍的问题;这是我一直想知道的事情。
让我知道!谢谢!
答案 0 :(得分:0)
private void showImage() {
String uri = "drawable/icon";
// int imageResource = R.drawable.icon;
int imageResource = getResources().getIdentifier(uri, null, getPackageName());
ImageView imageView = (ImageView) findViewById(R.id.myImageView);
Drawable image = getResources().getDrawable(imageResource);
imageView.setImageDrawable(image);
}
否则我建议你使用R. *这样的参考文献:
int imageResource = R.drawable.icon;
Drawable image = getResources().getDrawable(imageResource);
答案 1 :(得分:0)
据我所知,调用该图片的最快捷方式是
xml文件中的图片名称;例如,如果你想改变背景
的imageview,你可以在下面的代码中输入你的xml文件
机器人:背景= “@绘制/清除”。
请注意,图片必须位于drawable文件夹中。谢谢,我希望这会有所帮助。
答案 2 :(得分:0)
看起来Java 8为局部变量注释提供了limited support,但它的反射API无法让您在方法体内访问。所以你需要解析类文件本身。为此,像ASM这样的库可以解决问题。
答案 3 :(得分:0)
if(string.equals("clear")){
int resID = getResources().getIdentifier("clear", "drawable", getPackageName());
imageView.setBackgroundResource(resID);
}
答案 4 :(得分:0)
与使用getIdentifier
方法的其他方面相同。
imageView.setImageView(getResources().getIdentifier(string, "drawable",
getPackageName()));
但是,通过执行此操作,您可以在不使用if条件块的情况下进行处理,并直接指定string
中的值的Drawable(我认为这是您对此问题的意图)。