Помогите: как я могу включить (в xml) программно в свое приложение Android?

у меня есть в моем layout.xml эти строки:

<include android:id="@+id/promo1" android:layout_width="fill_parent"
         android:layout_height="fill_parent" layout="@layout/one_promo">
</include>
<include android:id="@+id/promo2" android:layout_width="fill_parent"
         android:layout_height="fill_parent" layout="@layout/one_promo">
</include>
<include android:id="@+id/promo3" android:layout_width="fill_parent"
         android:layout_height="fill_parent" layout="@layout/one_promo">
</include>

Я хочу сделать это программно в своем Java-коде.

Пожалуйста, помогите?

заранее спасибо


person Houcine    schedule 11.05.2011    source источник


Ответы (1)


Используйте LayoutInflater, как показано ниже.

Определите относительный макет в вашем xml

<RelativeLayout android:id="@+id/mylayout" android:layout_width="fill_parent"
         android:layout_height="fill_parent" />

Отобразите его в своем коде Java

RelativeLayout mynewlayout = (RelativeLayout) findById(R.id.mylayout);

Используйте надувной макет

LayoutInflater layoutInflater = (LayoutInflater) 
        this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    
mynewlayout.addView(0, layoutInflater.inflate(R.layout.one_promo, this, false) );
person Sankar Ganesh PMP    schedule 11.05.2011
comment
спасибо Санкар за ваш ответ, я думаю, что я интегрирую свои включения в xml, но мне нужно изменить макет атрибута каждого из них, объяснение: у меня есть пять включений в моем макете xml, и я хочу изменить атрибут макета каждого один программно, это возможно? - person Houcine; 11.05.2011
comment
@houcine: всегда пожалуйста, попробуй и сообщи мне, добрались ли ты до места назначения или нет? - person Sankar Ganesh PMP; 11.05.2011
comment
спасибо Санкар за ваш ответ, я думаю, что я интегрирую свои включения в xml, но мне нужно изменить макет атрибута каждого из них, объяснение: у меня есть пять включений в моем макете xml, и я хочу изменить атрибут макета каждого один программно, это возможно? - person Houcine; 11.05.2011
comment
@hounice: да, можно использовать LayoutInflater, как показано выше, а затем добавить изменение значения дочернего элемента в первый параметр метода addview, mynewlayout.addView(0, layoutInflater.inflate(R.layout.one_promo, this, false) ); затем для моего второго включения дайте 1, как показано здесь mynewlayout.addView(1, layoutInflater.inflate(R.layout.one_promo, this, false)); - person Sankar Ganesh PMP; 11.05.2011
comment
Я думаю, мне не нужно добавлять относительный макет в мой XML-код, потому что у меня уже есть linearLayout в моем HorizontalScrollView, что вы думаете? - person Houcine; 11.05.2011
comment
@Houcine: я дал RelativeLayout для примера, используйте макет, который упоминается в вашем xml - person Sankar Ganesh PMP; 11.05.2011
comment
mynewlayout.addView(0, layoutInflater.inflate(R.layout.one_promo, this, false) ); this: обратитесь к контексту Activity? или ViewGroup (в нашем примере, относительный макет)??? потому что, когда я пробовал это, это дает мне ошибку в этой инструкции, есть идеи? - person Houcine; 11.05.2011
comment
@Sankar: большое спасибо, мой друг, это отлично работает, но есть только одна вещь: вам нужно переставить аргументы метода mynewLayout.addView (View view, int index), :) большое спасибо, мой друг - person Houcine; 11.05.2011
comment
@houcine: Добро пожаловать, дорогой друг, обращайтесь в мой блог по поводу любых проблем с Android sankarganesh-info-exchange.blogspot. ком - person Sankar Ganesh PMP; 11.05.2011