Итак, после долгих смешных прыжков с обручами и общего контортиона, я убедил Android выполнить элементарную и часто требуемую задачу. То есть генерировать нуль для любого количества просмотров с любым количеством различных макетов и связанных переменных и вставлять их в другое представление, чтобы они складывались вертикально.Вертикальные макеты с динамически генерируемыми вложенными фрагментами в Android
Ну почти.
Android неохотой согласился включить все мнения после того как я прочитал и изменил код из this question.
public void setPeriods(ArrayList <HashMap> periods) {
for(HashMap<String, Object> period: periods){
FragmentManager childFragMan = getChildFragmentManager();
FragmentTransaction childFragTrans = childFragMan.beginTransaction();
ForecastPeriod forecastPeriod = new ForecastPeriod();
childFragTrans.add(R.id.forecast_period, forecastPeriod);
childFragTrans.commit();
forecastPeriod.setTitle((String)period.get("name"));
}
}
Проблема заключается в том, что мнения не складывается, или, по крайней мере, Android, как будто насмехаться надо мной «сложены «они, но на плоскости Z, чтобы они полностью перекрывали друг друга. Как это может быть?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="20dp"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:paddingBottom="0dp"
tools:context="com.blah.deblah.ForecastPeriods">
<fragment
android:id="@+id/forecast_period"
android:name="com.blah.deblah.ForecastPeriod"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:layout="@layout/fragment_forecast_period" />
</LinearLayout>
Как я могу изменить (надеюсь) XML, чтобы эти парни располагались вертикально так, как должны?
Ниже приведен XML для вставляемого фрагмента.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="com.blah.deblah.ForecastPeriod">
<TextView
android:id="@+id/period_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top|center"
android:fontFamily="sans-serif-bold"
android:gravity="start"
android:singleLine="true"
android:text="@string/title"
android:textColor="#cccccc"
android:textSize="24dp" />
<TextView
android:id="@+id/period_headline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|center"
android:layout_below="@id/period_title"
android:layout_marginTop="20dp"
android:fontFamily="sans-serif-light"
android:maxHeight="90dp"
android:gravity="left"
android:text="@string/loremipsum"
android:textColor="#cccccc"
android:textSize="24dp" />
<TextView
android:id="@+id/period_body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top|center"
android:layout_below="@id/period_headline"
android:layout_marginTop="20dp"
android:fontFamily="sans-serif-light"
android:gravity="left"
android:text="@string/loremipsum"
android:textColor="#cccccc"
android:textSize="18dp" />
</RelativeLayout>
Ну, я вижу вашу точку зрения, хотя я осмеливаюсь, что существование действий и фрагментов задает вопрос о том, почему существуют два вида деятельности и почему вы не сможете достичь всех одинаковых целей путем подклассификации представлений, как в iOS. – NFG
Ну для одного, и это касается всех языков программирования, Android - Android. Это не iOS, поэтому не стоит думать об этом с точки зрения iOS. Посмотрите на него отдельно и попытайтесь понять, что такое Android и как он работает, потому что это другая операционная система и поэтому должна рассматриваться как таковая. – cjbrooks12
Действительно, заменяя фрагменты представлениями и вставляя их в ViewGroup, работала точно по желанию. Благодарю. – NFG