所以我想说我想在相对布局中以编程方式创建多个TextView。看起来每个新的TextView我都必须像这样创建一个新的LayoutParams:
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
然后我添加我想要的任何规则:
p.addrule(...,...);
似乎我不能使用这个单一的LayoutParams来设置多个TextView的规则。这是真实的陈述吗?
谢谢,
答案 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使用不同的实例。