Как динамически изменять макет Android XML

1

Я новичок в разработке Android, и я буду разрабатывать одно приложение для Android. В этом приложении я хочу динамически генерировать xml-макет. После входа в приложение сервер отправит шаблон xml с описанием элементов управления, включая различное описание атрибутов (валидации на каждый элемент управления, maxlength, размер элемента управления и т.д.), Что означает, что не будет предопределенного макета xml.

Мой план состоит в том, что из загруженного шаблона xml я создам xml-макет и сохраняю этот xml в базе данных sqlite. Когда пользователь нажимает на запись, я хочу показать эту динамически созданную форму пользователю.

Можно ли изменить xml-макет (например, установить innerxml)?

  • 1
    Это действительно хорошая идея?
  • 0
    я сомневаюсь, возможно ли это ??
Показать ещё 2 комментария
Теги:
android-layout

6 ответов

2

Вы могли бы попробовать что-то вроде этого:

LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myView = inflater.inflate(myXmlPullParser, null);

setContentView(myView);
1

На основе Просмотр документации:

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

Вы не можете раздувать макет, если он не находится внутри каталога layout res.

  • 0
    в каталоге res будет один файл макета. Можно ли динамически изменять innerxml (заменить на вновь созданный макет) этого файла макета ???
  • 0
    вам нужно сначала накачать innerxml . Для этого вам нужен LayoutInflater.inflate() . Однако этот метод не принимает динамически загруженный. Это должно быть из папки res . Мой вывод таков: вы все еще не можете этого сделать.
Показать ещё 1 комментарий
0

если вы настаиваете на этом, вы должны проанализировать полученный XML файл в своей программе и программно добавить каждый вид XML-макета на основе того, как он запрашивается в полученном файле

0

Я считаю, что вместо динамического создания xml вы должны смотреть на создание программ, которые вы хотите программно. Если это расширенное представление, которое вы должны сделать, как предложил TheWAlkingCube, раздуйте представление xml динамически.

0

Android не поддерживает ваш способ работы полностью, но вы можете динамически создавать свой собственный макет.

Создайте свой собственный класс TemplateBuilder. Этот класс получит файл макета с вашего сервера (и, возможно, сохранит его в вашей базе данных). Файл XML можно прочитать, и вы можете добавить каждый определенный элемент во время выполнения. Как уже говорилось ранее, это не обычный способ работы на Android, но это будет ваш лучший вариант.

Если у вас есть определенные группы представлений или макеты, которые будут использоваться в макетах чаще, вы можете определить их как файлы XML в своих разрешениях -folder и раздуть их, когда это необходимо. Создание предопределенных блоков макета, которые вы можете раздувать, когда захотите, и буквально создавать свой собственный макет.

Для примера добавления представления во время выполнения вы можете перейти по ссылке ниже: http://www.dreamincode.net/forums/topic/130521-android-part-iii-dynamic-layouts/

0

это возможно. Сделайте один макет xml только с линейным макетом и в onCreate получите доступ к макету с идентификатором и создайте все представления программно и добавьте линейный макет в виде подзонов, а затем установите этот макет xml как setContentView. позже вы хотите добавить больше просмотров после просмотра, вы можете запустить поток пользовательского интерфейса и добавить представления.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню