Создайте пользовательский Drawable и используйте его в XML - программирование
Подтвердить что ты не робот

Создайте пользовательский Drawable и используйте его в XML

Я занят созданием менее сложной версии NinePatchDrawable, которая разбивает внутренние панели, а не растягивает их.

Я могу реализовать фактическую логику для выполнения рендеринга и т.д.

Однако я не могу найти документацию о том, как использовать этот Drawable в файлах XML. Это возможно? То есть, могу ли я использовать тег <tileable-nine-patch> или какой-либо такой, который я могу использовать для определения ресурсов?

4b9b3361

Ответ 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" />

Примечание:, который не поддерживается библиотекой поддержки.