例如,如果我定义了一个方向垂直的根线性布局:
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>
由于子线性布局及其内容的数量非常动态,我决定以编程方式将内容添加到根线性布局。
如何以编程方式将第二个布局添加到第一个布局,还可以为每个子设置所有布局属性并在子窗体中添加更多其他元素?
答案 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);
view1
,view2
和view3
是您的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)