2015-05-02 1 views
0

Моя активность:Добавить несколько представлений в актив- ности один под другим

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/city_detail_activity" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

</LinearLayout> 

мой макет XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/shopping_movies" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/shopping_name" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent"> 
    </TextView> 

    <TableLayout 
     android:id="@+id/movies" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent"> 
    </TableLayout> 
</LinearLayout> 

То, что я хочу сделать, это создать несколько экземпляров моего макета и добавить его один за другим внутри моей деятельности.

Мой код деятельности такова:

for (int i =0; i < shoppings.size(); i++) 
{ 
    LinearLayout shopping_movies = (LinearLayout)LayoutInflater.from(CityActivity.this).inflate(R.layout.shopping_movies, null); 
    TextView shopping_name = (TextView) shopping_movies.findViewById(R.id.shopping_name); 
    shopping_name.setText(shopp.name); 

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayoutt.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 

    addContentView(shopping_movies, params); 
} 

Проблема заключается в том, что каждая раскладка добавляется в положении 0. Один спереди другой, а не ниже. Я просто попробовал addRule(LinearLayout.BELOW, lastId), но не работает. Что я могу сделать?

ответ

0

Я решил проблему, добавив пустой LinearLayout в свою деятельность.

MyActivity:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/city_detail_activity" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout android:id="@+id/shoppings" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </LinearLayout> 
</LinearLayout> 

и мой Java-код:

for (int i =0; i < shoppings.size(); i++) 
{ 
    LinearLayout shopping_movies = (LinearLayout)LayoutInflater.from(CityDetailActivity.this).inflate(R.layout.shopping_movies, null); 
    ((TextView) shopping_movies.findViewById(R.id.shopping_name)).setText(shopp.name); 

    LinearLayout shoppingsViewGroup = (LinearLayout)findViewById(R.id.shoppings); 

    shoppingsViewGroup.addView(shopping_movies); 
} 
+0

Не стоит вставлять два макета, вы можете безопасно удалить макет @ id/shoppings и добавить свои представления в макет @ id/city_detail_activity. – Egor

+0

@Egor Если я делаю это, все мои взгляды добавляются один над другим. – MuriloKunze

1

Использование LinearLayout с android:orientation="vertical" вместо RelativeLayout в качестве контейнера для ваших взглядов, поскольку orientation не оказывает никакого влияния на RelativeLayout.

+0

Спасибо, но проблема по-прежнему, каждый layout.xml добавляется в передней предыдущей макете. – MuriloKunze

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