2017-02-21 4 views
1

Я хочу установить динамический макет, который отсутствует в ресурсе, например res или values.If он присутствует в моем файловом менеджере, и я хочу установить этот макет в качестве макета представления. Возможно ли установить динамический макет для представлений , без создания приложения. Я хочу отправить макет с сервера и загрузить макет и установить для представления без создания, а не из ресурсов. Используется нож для масляного ножа для этого процесса, или он просто привязывает взгляды к переменным.Возможно ли установить xml-макет как представление не из ресурсов динамически?

ответ

0

Butter knife используется только для привязки вида. Для этого процесса вам нужно извлечь XML-файл из хранилища, а затем преобразовать его в представление и затем установить в качестве макета.

+0

Значит, это возможно, так как я загружу файл макета локально и перейду к butterknife.so он установит динамический макет, как он будет установлен, дайте мне одну строку кода, чтобы установить макет через butterknife без setContentView() – Hanuman

+0

Butterknife не устанавливает макет, который он связывает макетами и слушателями - http://jakewharton.github.io/butterknife/ –

+0

Для этого нет встроенного метода. Вам нужно получить ваш XMl-файл, а затем преобразовать его в представление самостоятельно. –

0

Нет, вы не можете отправить файл макета с сервера и раздуть его динамически. Все представления в Android имеют идентификаторы, отображаемые в файле R.java. Вы не можете и не должны изменять его вручную.

Butterknife Используется для просмотра привязки и помогает уменьшить шаблон findViewById. Вы не можете использовать Butterknife для добавления Views.

Однако вы можете динамически создавать представления с использованием кода Java и добавлять их в любой макет контейнера. Например, вы можете добавить кнопку в линейный макет, подобный этому.

ViewGroup linearLayout = (ViewGroup) findViewById(R.id.linearLayoutID); 

Button someButton = new Button(this); 
someButton .setText("A Button"); 
someButton .setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
            LayoutParams.WRAP_CONTENT)); 
linerLayout.addView(someButton); 
+0

Есть ли какая-нибудь библиотека для этого, или нет библиотеки будет делать динамическую инъекцию макета? – Hanuman

2

Попробуйте Proteus

Proteus предназначается, чтобы быть капля в замене для андроида LayoutInflater; но в отличие от скомпилированных XML-макетов, входящих в APK, Proteus раздувает макеты во время выполнения. С помощью Proteus вы можете управлять макетом приложений из бэкэнд (без WebViews). Забудьте код шаблона findViewById, нанесите его на TextView, а затем setText(). Proteus имеет привязки данных и форматирование времени выполнения. Плагин в ваших собственных пользовательских представлениях, атрибутах и ​​форматировщиках.

p.s. большие части Flipart построены с использованием proteus

Смежные вопросы