2010-03-29 26 views
17

我想顯示列表中的所有資源可繪製,以便用戶可以選擇一個。有沒有什麼辦法可以循環遍歷所有的R.drawable項目,所以我不必將它們硬編碼到我的程序中?如何顯示資源可繪製列表

回答

30

在drawable類上使用getFields方法,您可以遍歷整個drawable的列表。

Field[] drawables = android.R.drawable.class.getFields(); 
for (Field f : drawables) { 
    try { 
     System.out.println("R.drawable." + f.getName()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

參考:http://www.darshancomputing.com/android/1.5-drawables.html

+6

使用'android.R'將只給出Android SDK中的原生繪圖。爲了獲得應用程序的可繪製對象,請使用'com.example.appname.R' – Anonsage 2013-07-06 00:21:26

+0

爲什麼要捕獲一般異常? – 2013-07-09 02:31:50

+0

我不確定 - 自從我寫這個答案以來已經有一段時間了。肯定有一個原因.. – Seidr 2013-07-09 09:36:59

0

如果你看看你生成的R.drawable對象的內部,你會看到ID是連續的,在我的情況下(可能是你的)從0x7f020000開始。由於它們似乎是按alpha排序的,因此您可以添加虛擬圖像AAAAAAA.png和ZZZZZZ.png,並僅在兩個ID之間進行迭代。

我不能贊同你試圖這樣做的原因,但我認爲這是行得通的。

+0

你是對的。在這裏看到我的答案:http://stackoverflow.com/a/19131585/1287856 它也可以在raw /文件夾以及xml /文件夾中迭代。 – 2013-10-03 09:11:16