Если, например, я определил корневой линейный макет с вертикальной ориентацией:
main.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_root"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="vertical"
<!-- I would like to add content here dynamically.-->
</LinearLayout>
Внутри корневого линейного макета я хотел бы добавить несколько дочерних линейных макетов , каждая из дочерних линейных макетов ориентации горизонтальна . Со всем этим я мог бы получить таблицу, похожую на вывод.
Например, root с дочерним макетом, таким как:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_root"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="vertical"
<!-- 1st child (1st row)-->
<LinearLayout
...
android:orientation="horizontal">
<TextView .../>
<TextView .../>
<TextView .../>
</LinearLayout>
<!-- 2nd child (2nd row)-->
...
</LinearLayout>
Поскольку количество дочерних линейных макетов и их содержимое довольно динамично, я решил программно добавить контент в корневой линейный макет.
Как можно программно добавить второй макет к первому, который также может установить все атрибуты макета для каждого дочернего элемента и добавить другие элементы внутри дочернего элемента?
LinearLayout layout = (LinearLayout)findViewById(R.id.layout); View child = getLayoutInflater().inflate(R.layout.child, null); layout.addView(child);
источник
child.findViewById
для получения элемента и установки прослушивателя onclick.Вы можете добиться каскадирования LinearLayout следующим образом:
LinearLayout root = (LinearLayout) findViewById(R.id.my_root); LinearLayout llay1 = new LinearLayout(this); root.addView(llay1); LinearLayout llay2 = new LinearLayout(this); llay1.addView(llay2);
источник
Я нашел более точный способ добавления представлений, таких как линейные макеты в kotlin (передать родительский макет в inflate () и false)
val parentLayout = view.findViewById<LinearLayout>(R.id.llRecipientParent) val childView = layoutInflater.inflate(R.layout.layout_recipient, parentLayout, false) parentLayout.addView(childView)
источник