2011-10-23 33 views
1

我有一個xml文件,它指定一組圖像按鈕名稱。另外,我想指定圖像資源ID作爲XML節點的屬性如下所示:在單獨的xml中指定drawable資源ID

<button name="close" resLocation="R.drawable.close" /> 

我解析的XML代碼中,我想設置爲動態產生的圖像的背景按鈕使用resLocation屬性。由於resLocation是一個字符串,我無法直接轉換爲Drawable對象。有什麼辦法可以解決嗎?

回答

1

可以使用get getResources().getIdentifier

String myResourceId = "close"; // Parsed from XML in your case 
getResources().getIdentifier(myResourceId, "drawable", "com.my.package.name"); 

這需要你的XML是有點不同:

<button name="close" resLocation="close" /> 

如果你需要保持R.type.id格式的XML,那麼你就只需要解析出類型和ID:

String myResourceId = "R.drawable.close"; 
String[] resourceParts = myResourceId.split("\\."); 
getResources().getIdentifier(resourceParts[2], resourceParts[1], "com.my.package.name"); 
0

您可以嘗試

<button name="close" resLocation="@drawable/close" /> 

,或者嘗試

ImageButton imgButton=new ImageButton(this); 

imgButton.setImageResource(getResources().getDrawable(R.drawable.close)); 
+0

這是行不通的,因爲資源標識符正在從XML文件(不是佈局文件)讀取,只能作爲字符串使用。 – goto10

+0

對不起,誤解了這個問題..你可以參考[link] http://stackoverflow.com/questions/4427608/android-getting-resource-id-from-string [/ link] –

+1

你可以使用反射,但' getIdentifier'是更清晰的方法,它是由API提供的,因此它是從字符串中獲取資源的認可方法。該鏈接中的答案甚至包括作者在他回答時不知道「getIdentifier」的編輯。 – goto10

相關問題