У меня простая задача - динамически добавить дочерние представления в LinearLayout, но я не знаю, как это сделать правильно.
Есть два способа:
<сильный>1. Раздувание представления и передача родительского контейнера методу раздувания.
View view = LayoutInflater.from(getActivity()).inflate(R.layout.item, container, true);
В этом случае, когда у меня более одного дочернего элемента, LayoutInfater каждый раз возвращает один и тот же дочерний объект представления при его раздувании. Поэтому я могу правильно инициализировать другие дочерние представления.
<сильный>2. Следующий способ — использовать метод LinearLayout addView(View view).
Проблема в том, что дочернее представление теряет состояние LayoutParams. И я должен программно установить новые LayoutParams для дочерних элементов. Это не очень хорошая практика.
Также мы можем поместить дочерний макет в комплиментарную оболочку в его собственном файле ресурсов макета. Но также не рекомендуется помещать макет в обертку.
Мой дочерний ресурс:
<RelativeLayout android:gravity="center_vertical"
android:paddingLeft="25dp"
android:layout_width="match_parent"
android:layout_height="@dimen/list_item_height">
<TextView android:id="@+id/tv_name"
android:text="Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
So what is the proper way to add child to LinearLayout, without adding LayoutParams programmatically and without wrapper layout?
Большое спасибо за помощь!