我正在尝试使用Android的spinner drawables(spinner_black_16,spinner_black_20,spinner_black_48或spinner_black_76),如this page所示。我的项目使用SDK 2.1,因此我将其更新为2.2,因为该页面状态是包含这些内容的SDK版本。不幸的是,android.R.drawable.spinner_black_xx
似乎都没有被定义。
这些drawables不适合开发人员使用吗?我似乎能够访问它们的唯一方法是通过以下复杂的方法:
final Drawable spinner = new ProgressBar(context).getIndeterminateDrawable();
不幸的是,这为我提供了白色旋转器,而不是黑色旋转器。
答案 0 :(得分:1)
访问这些drawable的最佳方法是将它们从SDK目录复制到项目中,然后像访问任何其他资源一样访问它们。
drawables位于$ANDROID_SDK_DIR/platforms/android-*/data/res/drawable-*/
。您可以下载并选择要从中提取drawable的操作系统版本。 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
下的状态栏图标)引用内置图标。如果要使用任何图标或其他内部可绘制资源,则应将这些图标或可绘制的本地副本存储在应用程序资源中,然后从应用程序代码中引用本地副本。这样,即使系统的副本发生变化,您也可以保持对图标外观的控制。