【问题标题】:How to obtain a themed drawable in code before API Level 21?如何在 API 级别 21 之前的代码中获取主题可绘制对象?
【发布时间】:2016-03-16 00:30:01
【问题描述】:

我想使用ContextResources 来获取主题drawable,而我的minSDK 是15。我该怎么做呢?

developer documentation for Resources 有一个注释,上面写着,

注意:要获得主题可绘制对象,请使用 Context.getDrawable(int) 或 getDrawable(int, Theme) 传递所需的主题。

Context.getDrawable(int)Resources.getDrawable(int, Theme) 都是在 API 21 中添加的,所以我不能使用它们。如果我查看 [ResourcesCompat 文档](http://developer.android.com/reference/android/support/v4/content/res/ResourcesCompat.html#getDrawable(android.content.res.Resources, int, android.content.res.Resources.Theme)),它有类似的限制:

在 API 级别 21 之前,不会应用主题,并且此方法只是调用 getDrawable(int)。

在 API 级别 21 之前真的没有办法获得主题可绘制对象吗?

如果需要,我可以提供示例代码,但它实际上只是一个指定属性的attrs.xml,定义该属性的themes.xml,应用它的ContextThemeWrapper,以及使用<solid android:color="?attr/MY_ATTRIBUTE" />drawable/foobar.xml

【问题讨论】:

    标签: android android-drawable android-resources android-context


    【解决方案1】:

    发布问题后,我发现您不能在 API 级别 21 之前的可绘制 XML 文件中使用?attr/。有关详细信息,请参阅How to reference style attributes from a drawable?

    【讨论】:

      猜你喜欢
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多