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

时间:2011-07-12 08:15:09

标签: android android-layout

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

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>

由于子线性布局及其内容的数量非常动态,我决定以编程方式将内容添加到根线性布局。

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

4 个答案:

答案 0 :(得分:94)

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。它们很容易以编程方式创建。

答案 1 :(得分:69)

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

答案 2 :(得分:5)

您可以像这样实现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);

答案 3 :(得分:0)

我找到了一种更准确的方法来添加像kotlin中的线性布局这样的视图(在inflate()和false中传递父级布局

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