Как требование, мне нужно построить ui из базы данных (сервера), в настоящее время я могу получить доступ к компонентам ui и их свойствам от db через json и программно, как
TextView tv=new TextView(mContext); tv.setText(jsonData.getText());
и в состоянии показать ui. Мой вопрос заключается в том, можно ли программно создать файл макета, чтобы я мог разместить входящие метаданные json в этот файл. и включить этот XML-файл макета. может кто-нибудь пролить свет на это. спасибоКак создать макет xml-файла программно в android
ответ
Нет, вы не можете создать файл макета программно. Из-за проблем с производительностью Android не поддерживает это. Статические файлы на самом деле предварительно скомпилированы для повышения эффективности. Однако вы можете создавать макет программно шаг за шагом, хотя это не рекомендуется для больших макетов.
хорошо LayoutInflater создает иерархию представления шаг за шагом, создавая представления и добавляя их своим родителям, так что в чем разница, если вы реплицируете работу LayoutInflater в свой код? – pskink
Вы можете, это не невозможно. Однако твоя производительность будет абсолютно сосать. Есть причина, почему его не встроили в Android, когда для них было бы тривиально делать это. И я бы не ожидал, что наивная реализация, сложенная вместе, будет очень хорошо работать. –
, если ваша структура данных, содержащая иерархию View, более или менее такая же быстро, как файл двоичного xml, используемый LayoutInflater, не будет абсолютно никакого штрафа за производительность, LayoutInflater действительно не делает никакой черной магии, вы даже можете создавать Представления самостоятельно, реализуя LayoutInflater.Factory [2] – pskink
Вы можете создать файл макета как любой другой файл. Но зачем? Вам нужно будет сохранить его на SD-карте или в памяти телефона. Помните, что вы не можете сохранить этот файл в res
, а затем просто позвонить setContentView(int resId);
или даже assets
в Runtime
, поэтому установка «на лету» Я думаю, что это лучший способ осуществить это
Вы могли бы попытаться получить свойства и атрибуты из виджетов из базы данных с помощью json ... далее динамически добавлять представления к вашему приложению .... – Navdroid
Вы не первый человек, который захочет это сделать, и это несостоятельный подход. Если вы хотите, чтобы приложение, макет которого определяется в Интернете, используйте веб-страницу. – Booger
@NAVdroid, вот что я делаю прямо сейчас. но я хочу сделать это наилучшим образом. – syed99