2012-10-15 37 views

回答

3

您不應該訪問私人資源,您不能確定該資源在所有設備上都可用。即使它可用,你也不能確定它會是一樣的。

如果您想使用私人資源,則必須將其從SDK或Android資源中複製到您的項目資源中。

+0

好的,聽起來很合理。但我也無法找到源中的Switch_track drawable。是嗎? –

+0

嗯,你不會找到'Switch_track',這個名字表示'Switch'小部件有'android:track'屬性。然後你可以在'styles.xml'中找到該屬性引用諸如'switch_track_holo_light'之類的可繪圖(這取決於主題)。 – Tomik

5

僅供參考: 雖然建議不要訪問內部資源,但您應該知道,它們可以更改或可以被供應商或操作系統更新刪除,但可以在運行時訪問它們:

int id = Resources.getSystem().getIdentifier("Switch_track", "styleable", "android"); 
+0

這是不正確的。 getIdentifier返回一個int,而styleable是一個int數組。我相信這可以做的唯一方法是通過使用反射http://stackoverflow.com/a/13841530/3508192 – charliebeckwith

+0

對不起,修正,風格有時是一個int數組 – charliebeckwith