2011-08-20 41 views
5

我試圖用this page上演示的Android Spinner drawable(spinner_black_16,spinner_black_20,spinner_black_48或spinner_black_76)中的一個。我的項目使用的是SDK 2.1,所以我將其更新爲2.2,因爲頁面狀態是包含這些內容的SDK版本。不幸的是,似乎沒有定義android.R.drawable.spinner_black_xx不能使用android微調繪製?

這些可繪製對象不適用於開發人員嗎?我似乎唯一的其他方式能夠訪問它們是通過以下方法令人費解:

final Drawable spinner = new ProgressBar(context).getIndeterminateDrawable(); 

不幸的是,它提供了我的白微調,而不是黑色的。

+1

儘管我不能訪問這些spinners(試圖通過android.R.drawable.spinner_black _...訪問它們)一個建議:我建議你不要使用android的原生樣式。出於簡單的原因,他們可能隨時消失/變化。 – Ready4Android

+0

@ Ready4Android - 你說得對。如果您發佈答案,我會標記爲正確。 –

+2

您還可以嘗試通過android sdk文件夾獲取繪圖並將其導入到您的項目中。你可以在/platforms/android-xx/data/res – Apperside

回答

1

訪問這些可繪製對象的最好方法是將它們從SDK目錄複製到項目中,然後像訪問其他資源一樣訪問它們。

繪圖位於$ANDROID_SDK_DIR/platforms/android-*/data/res/drawable-*/。您可以下載並選擇您想從中拉出drawable的OS版本。 API 7級/ OS 2.1版已全面補充:

platforms/android-7/data/res/drawable-mdpi/spinner_black_16.png 
platforms/android-7/data/res/drawable-mdpi/spinner_black_20.png 
platforms/android-7/data/res/drawable-mdpi/spinner_black_48.png 
platforms/android-7/data/res/drawable-mdpi/spinner_black_76.png 
platforms/android-7/data/res/drawable-hdpi/spinner_black_16.png 
platforms/android-7/data/res/drawable-hdpi/spinner_black_20.png 
platforms/android-7/data/res/drawable-hdpi/spinner_black_48.png 
platforms/android-7/data/res/drawable-hdpi/spinner_black_76.png 

雖然目前它沒有,Android的官方「圖標設計準則」 used to explicitly address this situation和建議複製:

由於資源平臺之間切換版本,您不應使用Android平臺資源ID(即android.R.drawable下的狀態欄圖標)引用內置圖標。如果要使用任何圖標或其他內部可繪製資源,則應在應用程序資源中存儲這些圖標或繪圖的本地副本,然後從應用程序代碼中引用本地副本。這樣,即使系統的副本發生更改,您也可以保持對圖標外觀的控制。