Создайте пользовательский Drawable и используйте его в XML
Я занят созданием менее сложной версии NinePatchDrawable
, которая разбивает внутренние панели, а не растягивает их.
Я могу реализовать фактическую логику для выполнения рендеринга и т.д.
Однако я не могу найти документацию о том, как использовать этот Drawable
в файлах XML. Это возможно? То есть, могу ли я использовать тег <tileable-nine-patch>
или какой-либо такой, который я могу использовать для определения ресурсов?
Ответы
Ответ 1
К сожалению, невозможно использовать пользовательские чертежи в файлах XML (для API 23 и ниже) из-за потенциальных проблем безопасности. См. здесь для потока групп Google по этой теме с ответом Ромена Гая, одного из разработчиков Android.
Вы все равно можете использовать их в своем Java-коде.
Update:
Как отмечает LeoFarage в комментариях, начиная с API 24, теперь вы можете использовать пользовательские чертежи в файлах XML, но только в своем приложении.
Ответ 2
Начиная API Android 24, пользовательские классы Drawables могут использоваться в XML только в вашем пакете.
Пользовательские классы drawables могут использоваться в XML несколькими способами:
Использование полного имени класса в качестве имени элемента XML. Для этого метода пользовательский класс drawable должен быть общедоступным классом верхнего уровня.
<com.yourapp.MyCustomDrawable
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#ffff0000"/>
Использование drawable как имя элемента XML и указание полного имени класса из атрибута class. Этот метод может использоваться как для общедоступных классов верхнего уровня, так и для общедоступных статических внутренних классов.
<drawable xmlns:android="http://schemas.android.com/apk/res/android"
class="com.myapp.MyTopLevelClass$InnerCustomDrawable"
android:color="#ffff0000" />
Примечание:, который не поддерживается библиотекой поддержки.