Definizione in linea di casi di non-bitmap in layerlist o elementi XML Levellist
-
20-12-2019 - |
Domanda
La documentazione della specifica delle risorse XML di LayerList e Levellist Drawasbles dice che l'elemento item
Accetterà solo bitmap
come elemento figlio. Su alcuni Risposte Per quanto riguarda gli elenchi di livello, vedo che le persone aggiungano shape
Tag come bambini ai tag item
. Ho provato quanto segue e sembra funzionare bene.
<?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>
.
Ecco la mia domanda. è questo documentato ovunque, o dovrei evitare questo tipo di costrutto perché non è supportato in tutte le versioni API, o è la documentazione semplicemente incompleta e quanto sopra è perfettamente legale?
Per chiarire, so che posso specificare qualsiasi tipo di disegnabile utilizzando file di risorse separati e facendo riferimento a loro utilizzando l'attributo android:drawable
. La domanda si riferisce alla specifica in linea di disegnabili arbitrari all'interno dell'XML dell'elenco di livello o dell'elenco di livello.
Soluzione 2
La risposta è sì, è consentito e il comportamento supportato.
Mentre non è documentato, i tag non bitmap vengono utilizzati nelle risorse ufficiali Android XML.Ad esempio la fonte di progress_large_hollo.xml contiene quanto segue.
<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>
.
Altri suggerimenti
Non afferma che accetta solo oggetti Bitmap
, ma che li accetta.È possibile utilizzare android:drawable
per specificare un drammable.Tirare le tue forme nella loro definizione XML disegnabile e li refidisce nell'elenco di livello.