Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't use android spinner drawable?

I'm trying to use one of Android's spinner drawables (spinner_black_16, spinner_black_20, spinner_black_48, or spinner_black_76) as demonstrated on this page. My project is using SDK 2.1, so I updated it to 2.2 as that page states is the SDK version where these are included. Unfortunately, none of the android.R.drawable.spinner_black_xx appear to be defined.

Are these drawables not available for developer usage? The only other way I seem to be able to access them is via the following convoluted method:

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

Unfortunately, that provides me the white spinner, not the black one.

like image 772
Matt Huggins Avatar asked Nov 13 '22 18:11

Matt Huggins


1 Answers

The best way to access those drawables is to copy them from your SDK directory into your project and then access them like any other resources.

The drawables are located in $ANDROID_SDK_DIR/platforms/android-*/data/res/drawable-*/. You can download and select the version of the OS that you'd like to pull drawables from. API level 7/OS version 2.1 has the full complement:

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

Though it doesn't currently, Android's official "Icon Design Guidelines" used to explicitly address this situation and recommend copying:

Because resources can change between platform versions, you should not reference built-in icons using the Android platform resource IDs (i.e. status bar icons under android.R.drawable). If you want to use any icons or other internal drawable resources, you should store a local copy of those icons or drawables in your application resources, then reference the local copy from your application code. In that way, you can maintain control over the appearance of your icons, even if the system's copy changes.

like image 88
blahdiblah Avatar answered Jan 02 '23 11:01

blahdiblah