2015-03-13 2 views
2

Я хочу изменить динамический/программный код layout моего <include/>.Заменить `layout` <include/> тег программно для Android

У меня есть основной layout, который я хочу повторно использовать, но содержимое должно динамически меняться.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/swipe_container" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/white_background" 
    android:orientation="vertical" > 
    <include 
     android:id="@+id/main_container" 
     layout="REPLACE_THIS" /> 
</android.support.v4.widget.SwipeRefreshLayout> 

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

Заранее спасибо.

+1

См. Это [сообщение] (http://stackoverflow.com/questions/18999601/how-can-i-programmatically-include-layout-in-android), он может содержать ваше решение. – DavidL

+0

Я нашел этот другой вопрос, на который был дан ответ http://stackoverflow.com/a/18999694/788205 –

ответ

0

Я нашел ответ пару месяцев назад. Вам просто нужно использовать ViewStub и надуть соответствующий.

0

Вы можете сделать таким образом

RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id. main_container); 
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.your_layout, mainLayout, true); 
mainLayout.removeAllView(); 
mainLayout.addView(layout); 

Перед добавлением вида вы должны удалить все представления, а затем раздуть макет в нем, как показано выше

+0

Это не сработало; –

5

Просто измените код

RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id. main_container); 
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.your_layout, null); 
mainLayout.removeAllViews(); 
mainLayout.addView(layout); 

Это сработало для меня.

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