每个新视图都需要一个新的布局框架吗?

时间:2011-03-23 16:03:37

标签: android

所以我想说我想在相对布局中以编程方式创建多个TextView。看起来每个新的TextView我都必须像这样创建一个新的LayoutParams:

RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT);

然后我添加我想要的任何规则:

p.addrule(...,...);

似乎我不能使用这个单一的LayoutParams来设置多个TextView的规则。这是真实的陈述吗?

谢谢,

3 个答案:

答案 0 :(得分:7)

对于多个视图使用相同的LayoutParams很好,模块化注意在视图通过布局之前更改LayoutParams会将更改应用于所有视图。

如果您只是想保存代码,那么您可以查看LayoutParams'copy constructor。这允许您从另一个LayoutParams中的数据创建一个新的LayoutParams,而不需要两个引用相同的LayoutParams实例。

答案 1 :(得分:2)

在创建和构建正确的LayoutParams实例后,您可以将其用于该父级中的每个View:

view1.setLayoutParams(params0);

如果你想拥有params的独立副本(我想你想要的话),你可以改变它:

RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(params0);
view1.setLayoutParams(params);

答案 2 :(得分:1)

如果将相同的LayoutParams对象提供给多个TextView,它们将共享所有设置。这意味着如果您更改其中的内容,则更改将应用​​于所有TextView。通常,您需要为每个TextView使用不同的实例。