27

我有一个 imageView,我想显示您当前所在国家的一个小图标。我可以获得国家代码,但问题是我无法动态更改 imageView 资源。我的图片文件都是小写的(例如:国家代码=US,图片文件=us)

我的代码(countryCode 是大写字母的当前 countryCode):

String lowerCountryCode = countryCode.toLowerCase();
String resource = "R.drawable." + lowerCountryCode;
img.setImageResource(resource);

现在,这当然行不通,因为setImageResource想要一个int,所以我该怎么做呢?

4

5 回答 5

37

int将您必须在该方法中使用的国家名称映射到一个简单的setImageResource方法是:

int id = getResources().getIdentifier(lowerCountryCode, "drawable", getPackageName());
setImageResource(id);

但是您真的应该尝试为您想要支持的国家/地区使用不同的文件夹资源。

于 2012-09-28T19:54:07.363 回答
34

这是ImageView使用setImageResource()方法设置图像的方法:

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);
于 2014-04-24T00:14:05.797 回答
0

你使用那个代码

ImageView[] ivCard = new ImageView[1];

@override    
protected void onCreate(Bundle savedInstanceState)  

ivCard[0]=(ImageView)findViewById(R.id.imageView1);
于 2013-01-05T08:56:55.600 回答
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]));
于 2020-09-24T19:09:18.167 回答
-2

你可以试试这个:-

myImgView.setImageDrawable(getResources().getDrawable(R.drawable.image_name));
于 2012-09-28T19:48:44.657 回答