我有一个imageView,我想显示您当前所在国家/地区的一个小图标。我可以获取国家/地区代码,但问题是我无法动态更改imageView资源。我的图片文件全部为小写(例如:国家/地区代码= US,图片文件=我们)
我的代码(countryCode是大写字母的当前countryCode):
String lowerCountryCode = countryCode.toLowerCase();
String resource = "R.drawable." + lowerCountryCode;
img.setImageResource(resource);
现在,当然这不起作用,因为setImageResource想要一个int,所以我该怎么做呢? 提前致谢:D
答案 0 :(得分:30)
将您所拥有的国家/地区名称映射到int
setImageResource
方法的一种简单方法是:
int id = getResources().getIdentifier(lowerCountryCode, "drawable", getPackageName());
setImageResource(id);
但您应该尝试为要支持的国家/地区使用不同的文件夹资源。
答案 1 :(得分:21)
这是使用setImageResource()方法将图片设置为ImageView
的方法:
ImageView myImageView = (ImageView)v.findViewById(R.id.img_play);
// supossing to have an image called ic_play inside my drawables.
myImageView.setImageResource(R.drawable.ic_play);
答案 2 :(得分:0)
您使用该代码
ImageView[] ivCard = new ImageView[1];
@override
protected void onCreate(Bundle savedInstanceState)
ivCard[0]=(ImageView)findViewById(R.id.imageView1);
答案 3 :(得分:0)
您可以使用以下代码:
// Create an array that matches any country to its id (as String):
String[][] countriesId = new String[NUMBER_OF_COUNTRIES_SUPPORTED][];
// Initialize the array, where the first column will be the country's name (in uppercase) and the second column will be its id (as String):
countriesId[0] = new String[] {"US", String.valueOf(R.drawable.us)};
countriesId[1] = new String[] {"FR", String.valueOf(R.drawable.fr)};
// and so on...
// And after you get the variable "countryCode":
int i;
for(i = 0; i<countriesId.length; i++) {
if(countriesId[i][0].equals(countryCode))
break;
}
// Now "i" is the index of the country
img.setImageResource(Integer.parseInt(countriesId[i][1]));
答案 4 :(得分:-1)
你可以试试这个: -
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.image_name));