XML-файл раздувания макета Android, созданный во время выполнения

Я планирую создавать XML-макеты моей среды выполнения пользовательского интерфейса (а не обычные файлы R.layout.*), сохраняя их во временном хранилище (либо в файловой системе, либо в SQLite).

Читая документы, я нашел запутанное утверждение для public View inflate (XmlPullParser parser, ViewGroup root):

Важно. Из соображений производительности инфляция представлений в значительной степени зависит от предварительной обработки XML-файлов, которая выполняется во время сборки. Поэтому в настоящее время невозможно использовать LayoutInflater с XmlPullParser поверх простого XML-файла во время выполнения.

Кто-нибудь знает способ устранить упомянутое ограничение? Возможно, вы используете другую процедуру наполнения View или что-то похожее/непараллельное?


person Barmaley    schedule 16.01.2013    source источник
comment
Вы можете реализовать решение «сделай сам», в котором вы создаете пользовательский интерфейс во время выполнения, используя свои собственные файлы конфигурации.   -  person Bart Friederichs    schedule 16.01.2013
comment
Я настолько разозлился, что написал для этого собственную библиотеку. Код уродлив, а производительность ужасна на данный момент, но он хорошо работает для моего проекта: github.com/nickwah/ Динамическиймакетинфлятор   -  person Nick White    schedule 13.08.2015


Ответы (1)


Для этого потребуется написать свой собственный Layout Inflater, который может читать XML на диске и создавать из него макет. Вы можете перемещаться по иерархии тегов, создавать и добавлять представления в соответствии с атрибутами каждого тега и т. д. Но это будет очень медленно по сравнению с реализацией Android по умолчанию.

person S.D.    schedule 16.01.2013
comment
Хорошо, на самом деле я уже реализовал свой собственный инфлятор. Я просто подумал, что мог бы использовать встроенный. - person Barmaley; 17.01.2013