【发布时间】:2015-11-03 11:05:03
【问题描述】:
我有一个简单的任务 - 将子视图动态添加到 LinearLayout,但我不知道如何以正确的方式完成。
有两种方式:
1.膨胀视图并将父容器传递给膨胀方法。
View view = LayoutInflater.from(getActivity()).inflate(R.layout.item, container, true);
在这种情况下,当我有多个孩子时,LayoutInfater 每次膨胀时都会返回相同的子视图对象。所以我可以正确初始化其他子视图。
2。下一个方法是使用LinearLayout方法addView(View view)。
问题是,子视图失去了它的 LayoutParams 状态。 而且我必须以编程方式为孩子设置新的 LayoutParams。这不是一个好习惯。
我们也可以将孩子放在他自己的布局资源文件中的免费包装布局中。但将布局放入包装器也是一种不好的做法。
我的孩子资源:
<RelativeLayout android:gravity="center_vertical"
android:paddingLeft="25dp"
android:layout_width="match_parent"
android:layout_height="@dimen/list_item_height">
<TextView android:id="@+id/tv_name"
android:text="Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
那么在不以编程方式添加 LayoutParams 且不使用包装布局的情况下,将子级添加到 LinearLayout 的正确方法是什么?
非常感谢您的帮助!
【问题讨论】:
-
您可以查看问题。问题将线性布局作为父视图,并将 tableLayout 添加为子视图。 stackoverflow.com/questions/31847066/…
-
在这个示例中,根子布局没有自定义布局参数。 (如固定 layout_width 或 layout_height)
-
您要修复子视图的宽度和高度吗?或者你不想修复它?线性布局是根布局,不是自定义的。
-
当你的孩子的根布局有,例如layout_height="50dp",所以当你把这个孩子添加到容器中时,比如container.addView(child),孩子的layout_height设置为wrap_content,因为它是 LayoutParams 参数。
标签: android android-linearlayout addchild