为什么当我将元素添加到 FrameLayout flCatScroll 时,仅显示一个而不是十个,它们可能重叠,或者为什么边距不增加。
myactivity.runOnUiThread(new Runnable() {
@Override
public void run() {
//Main Framelayout
FrameLayout flCatScroll = (FrameLayout) myactivity.findViewById(R.id.flCatScroll);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
params.gravity = Gravity.TOP;
params.topMargin = 20;
for(int i = 0; i < 10; i++) {
//FrameLayout mainItemLayout = new FrameLayout(myactivity);
listFramelayouts.add(new FrameLayout(myactivity));
}
for(int i = 0; i < listFramelayouts.size(); i++) {
params.topMargin = 20 * i;
TextView itemName = new TextView(myactivity);
itemName.setText("Test" + i);
listFramelayouts.get(i).addView(itemName);
flCatScroll.addView(listFramelayouts.get(i), params);
}
}
});
最佳答案
引用语义再次出击!
因为您要重用 params 对象,而不是每次都创建一个新对象,所以无论您添加 View 时的边距是多少,它们最后都共享相同的边距。所以它们确实都是重叠的。
这有意义吗?
关于android - 使用 for 循环以编程方式将元素添加到 FrameLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31020220/