【问题标题】:Is there any way to use not public android resources in my application?有什么方法可以在我的应用程序中使用非公共 android 资源?
【发布时间】:2016-10-04 14:20:27
【问题描述】:

我需要在我的小部件中使用以下资源:

  • pressed_application_background_static
  • focused_application_background_static

我希望这些资源的使用能让我在标准 android 上拥有橙色背景,在 HTC 上拥有绿色背景。

但它们不公开,所以使用

android:drawable="@android:drawable/pressed_application_background_static"

是不允许的。还有什么方法可以使用它们吗?

【问题讨论】:

    标签: android resources


    【解决方案1】:

    你可以这样引用它们

    android:drawable="@*android:drawable/pressed_application_background_static"
    

    但不建议这样做,因为私有资源将来可能会被重命名或删除。

    【讨论】:

    • 它允许您访问私有资源。我想它是来警告你的。您可以毫无顾虑地使用@android:drawable,但是在使用@*android:drawable 时,您应该知道它并不能保证在那里,所以您需要自己承担风险。
    • 使用最新的 SDK 执行此操作时,我收到错误消息“非法资源引用:@*android 资源是私有的,并不总是存在”
    • @Jules 如果您使用 IntelliJ IDEA/Android Studio,您可以执行 ALT + Enter 并取消该文件的警告。
    【解决方案2】:

    浏览可绘制的 sdk 并将其复制到本地的 res/drawable 文件夹。它可能是一个 XML 文件,但如果您搜索“pressed_application_background_static”,您应该可以轻松找到它。

    【讨论】:

    • 这是我已经做过的——但这不是我想要的。使用这种方法,所有设备上的颜色将始终相同。但我需要在 HTC 上将其设置为绿色,在标准 Android 上设置为橙色。这就是为什么我要参考标准资源。
    • 如何区分 HTC Android 和普通 Android?
    • 我不知道如何区分它们,所以我希望如果我使用标准资源(@android:drawable/),那么在HTC和普通Android上会使用不同的资源。
    • 如果一个显示为绿色而另一个显示为橙色,那么与 HTC 设备相比,普通 Android 设备上的该文件将有所不同。如果您因为它是“私有”而无法访问它,我唯一的建议是弄清楚如何区分操作系统并更改使用的可绘制对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2019-02-13
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多