2014-10-24 5 views
0

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

<FrameLayout android:id="@+id/container 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content/> 

выше FrameLayout может быть LinearLayout, RelativeLayout или любой другой. Во время выполнения используйте этот контейнер для создания динамически добавленного представления. Он работал отлично, но этот контейнерный макет увеличивал один уровень иерархии представлений.

Элемент merge в xml, но не может программно объединить макеты.

Существует ViewStub, до сих пор не может программно загружать с различными раскладками или видом

Мне интересно, если есть более легкий путь?

+0

использование фрагменты. они могут быть легко созданы, легко уничтожены, легко заменены и повторно использованы. –

+0

Вы хотите создавать представления программно, например, «новый ImageView (контекст)» и т. д.? –

+0

@OleksiiKropachov, иногда я сделал – fifth

ответ

0

Вы можете использовать <merge> правильно, но вы должны убедиться, что ваши inflate вызовов указали родитель, а надут макет должен быть добавлен к этому родителю (проходят true как 3 пары):

LinearLayout somecontainer = ... 
getLayoutInflater().inflate(R.layout.your_merge_layout, somecontainer, true); 

Тогда вы не получите дополнительной глубины, все дети <merge> будут добавлены непосредственно к somecontainer.

+0

Если используется «merge», можно ли развернуть компоновку xml в любой тип контейнера? Я имею в виду, если контейнер LinearLayout, RelativeLayout или любые другие типы. – fifth

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