动态地向线性布局添加内容?

例如,我定义了一个方向为垂直的根线性布局:

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>

在根线性布局内,我想添加多个 子线性布局子线性布局,每个子线性布局方向是 水平。有了这些,我可以得到一个类似于 output 的表。

例如,具有 孩子布局的 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>

由于子线性布局的数量及其内容是相当动态的,因此我决定以编程方式向根线性布局添加内容。

如何以编程方式将第二个布局添加到第一个布局中,这也可以设置每个子元素的所有布局属性,并在子元素中添加更多其他元素?

137963 次浏览
LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
View child = getLayoutInflater().inflate(R.layout.child, null);
layout.addView(child);

在你的 onCreate()中,写下以下内容

LinearLayout myRoot = (LinearLayout) findViewById(R.id.my_root);
LinearLayout a = new LinearLayout(this);
a.setOrientation(LinearLayout.HORIZONTAL);
a.addView(view1);
a.addView(view2);
a.addView(view3);
myRoot.addView(a);

view1view2view3是你的 TextView,它们很容易通过编程创建。

您可以实现如下的 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 中的线性布局(传递父布局,使用 flate ()和 false))

val parentLayout = view.findViewById<LinearLayout>(R.id.llRecipientParent)
val childView = layoutInflater.inflate(R.layout.layout_recipient, parentLayout, false)
parentLayout.addView(childView)