2

LayerListLevelList drawables的 XML 资源规范的文档说该item元素只接受bitmap作为子元素。在有关级别列表的一些答案中,我看到人们正在将shape标签作为子标签添加到item标签中。我尝试了以下方法,它似乎工作得很好。

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:maxLevel="0">
    <shape android:shape="rectangle">
      <solid android:color="#ff0000" />
    </shape>
  </item>
  <item android:maxLevel="1">
    <shape android:shape="oval">
      <solid android:color="#0000ff" />
    </shape>
  </item>
</level-list>

这是我的问题。这是否记录在任何地方,或者我应该避免这种结构,因为它不受所有 API 版本的支持,或者文档只是不完整并且上面是完全合法的?

澄清一下,我知道我可以通过使用单独的资源文件并使用android:drawable属性引用它们来指定任何类型的可绘制对象。该问题是指层列表或级别列表的 XML 中任意可绘制对象的内联规范。

4

2 回答 2

1

它没有说它只接受Bitmap对象,但它会接受它们。您可以使用android:drawable指定可绘制对象。将您的形状拉入它们自己的可绘制 XML 定义并在级别列表中引用它们。

于 2014-01-08T17:20:22.877 回答
0

答案是肯定的,这是允许和支持的行为。

虽然没有记录,但在官方 Android XML 资源中使用了非位图标签。例如progress_large_holo.xml的源包含以下内容。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <rotate
             android:drawable="@drawable/spinner_76_outer_holo"
             android:pivotX="50%"
             android:pivotY="50%"
             android:fromDegrees="0"
             android:toDegrees="1080" />
    </item>
    <item>
        <rotate
             android:drawable="@drawable/spinner_76_inner_holo"
             android:pivotX="50%"
             android:pivotY="50%"
             android:fromDegrees="720"
             android:toDegrees="0" />
    </item>
</layer-list>

其他来源还表明,任何被接受为可绘制资源的 XML 都可以放置在item标签内。

于 2014-02-10T14:18:07.860 回答