Créez un dessin personnalisé et utilisez-le en XML
Je suis occupé à créer une version moins compliquée de NinePatchDrawable
que les carreaux des panneaux intérieurs au lieu de les étirer.
Je peux implémenter la logique réelle pour faire le rendu et tel.
Cependant, je ne trouve pas de documentation sur l'utilisation de ce Drawable
dans les fichiers XML. Est-ce possible? C'est-à-dire, puis-je avoir un <tileable-nine-patch>
, ou une telle étiquette que je peux utiliser pour définir des ressources?
2 Solutions collect form web for “Créez un dessin personnalisé et utilisez-le en XML”
Malheureusement, il n'est pas possible d'utiliser des modèles personnalisables dans des fichiers XML (pour API 23 et moins) en raison de problèmes de sécurité potentiels. Consultez ici un groupe de Google Groupes sur ce sujet même avec une réponse de Romain Guy, l'un des développeurs Android.
Vous pouvez toujours les utiliser dans votre code Java.
Mettre à jour:
Comme le souligne LeoFarage dans les commentaires, à partir de l'API 24, vous pouvez maintenant utiliser des modèles personnalisables dans les fichiers XML, mais uniquement dans votre package de demande.
À partir de l'API Android 24, les classes Drawables personnalisées peuvent être utilisées en XML uniquement dans votre package.
Les classes drawables personnalisées peuvent être utilisées en XML de plusieurs façons:
Utilisation du nom de classe entièrement qualifié en tant que nom d'élément XML. Pour cette méthode, la classe desséchable personnalisée doit être une classe publique de premier niveau.
<com.yourapp.MyCustomDrawable xmlns:android="http://schemas.android.com/apk/res/android" android:color="#ffff0000"/>
En utilisant le nom d'élément XML comme modèle et en spécifiant le nom de classe entièrement qualifié à partir de l'attribut de classe. Cette méthode peut être utilisée tant pour les classes publiques de premier niveau que pour les classes internes statiques publiques.
<drawable xmlns:android="http://schemas.android.com/apk/res/android" class="com.myapp.MyTopLevelClass$InnerCustomDrawable" android:color="#ffff0000" />
Remarque: cela n'est pas pris en charge par la bibliothèque de support.