【问题标题】:Can't use android spinner drawable?不能使用android spinner drawable?
【发布时间】:2011-08-20 01:32:13
【问题描述】:

我正在尝试使用 Android 的微调器可绘制对象之一(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 似乎都没有被定义。

这些可绘制对象是否不可供开发人员使用?我似乎能够访问它们的唯一其他方法是通过以下复杂的方法:

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

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

【问题讨论】:

  • 尽管我也无法访问这些微调器(试图通过 android.R.drawable.spinner_black_... 访问它们)一个建议:我建议您不要使用 android 的原生样式。原因很简单,它们可能随时消失/改变。
  • @Ready4Android - 你是对的。如果您作为答案发布,我将标记为正确。
  • 您也可以尝试通过 android sdk 文件夹获取可绘制对象并将它们导入到您的项目中。你可以在 /platforms/android-xx/data/res 中找到它们
  • @SimonVeloper 小心那些图片不一定是免费的。
  • @MasterScrat 你到底是什么意思?

标签: android android-widget drawable android-2.2-froyo


【解决方案1】:

访问这些可绘制对象的最佳方法是将它们从您的 SDK 目录复制到您的项目中,然后像访问任何其他资源一样访问它们。

drawables 位于$ANDROID_SDK_DIR/platforms/android-*/data/res/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 下的状态栏图标)。如果您想使用任何图标或其他内部可绘制资源,您应该将这些图标或可绘制资源的本地副本存储在您的应用程序资源中,然后从您的应用程序代码中引用本地副本。这样,即使系统的副本发生变化,您也可以保持对图标外观的控制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多