我有一個xml文件,它指定一組圖像按鈕名稱。另外,我想指定圖像資源ID作爲XML節點的屬性如下所示:在單獨的xml中指定drawable資源ID
<button name="close" resLocation="R.drawable.close" />
我解析的XML代碼中,我想設置爲動態產生的圖像的背景按鈕使用resLocation屬性。由於resLocation是一個字符串,我無法直接轉換爲Drawable對象。有什麼辦法可以解決嗎?
我有一個xml文件,它指定一組圖像按鈕名稱。另外,我想指定圖像資源ID作爲XML節點的屬性如下所示:在單獨的xml中指定drawable資源ID
<button name="close" resLocation="R.drawable.close" />
我解析的XML代碼中,我想設置爲動態產生的圖像的背景按鈕使用resLocation屬性。由於resLocation是一個字符串,我無法直接轉換爲Drawable對象。有什麼辦法可以解決嗎?
可以使用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");
您可以嘗試
<button name="close" resLocation="@drawable/close" />
,或者嘗試
ImageButton imgButton=new ImageButton(this);
imgButton.setImageResource(getResources().getDrawable(R.drawable.close));
這是行不通的,因爲資源標識符正在從XML文件(不是佈局文件)讀取,只能作爲字符串使用。 – goto10
對不起,誤解了這個問題..你可以參考[link] http://stackoverflow.com/questions/4427608/android-getting-resource-id-from-string [/ link] –
你可以使用反射,但' getIdentifier'是更清晰的方法,它是由API提供的,因此它是從字符串中獲取資源的認可方法。該鏈接中的答案甚至包括作者在他回答時不知道「getIdentifier」的編輯。 – goto10