gpt4 book ai didi

android - 我可以将 LayoutPrams 与 ViewGroup.addView 重用吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:08:18 27 4
gpt4 key购买 nike

ViewGroup.addView 是否将 LayoutParams 数据克隆到内部或链接到它?我可以通过多次调用不同 View 的 addView() 来重用 LayoutParams 的同一个实例吗?

apidoc中没有关于它的任何内容。

答案是否定的(通过实验验证):

public class SymbolPadActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

RelativeLayout.LayoutParams labelParams;

/*
* This block to reuse is not working
labelParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
labelParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
labelParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
*/


RelativeLayout mover = new RelativeLayout(this);

TextView textView;
for(int leftMargin = 0; leftMargin<3000; leftMargin += 100) {
for(int topMargin=0; topMargin<800; topMargin += 40) {

// I can't omit these 3 lines
labelParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
labelParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
labelParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);

labelParams.leftMargin = leftMargin;
labelParams.topMargin = topMargin;

textView = new TextView(this);
textView.setText("(" + leftMargin + "," + topMargin + ")");
mover.addView(textView, labelParams);

}
}




RelativeLayout.LayoutParams moverParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
moverParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
moverParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
moverParams.leftMargin = 0;
moverParams.topMargin = 0;

RelativeLayout stator = new RelativeLayout(this);
stator.addView(mover, 0, moverParams);

setContentView(stator);


}

最佳答案

There is nothing about it in apidoc.

这意味着无论当前的实现是什么,您都需要做出更保守的选择,因为实现可能会发生变化。

因此,您需要假设使用不同的 Views 重用 LayoutParams 的实例是不安全的。

就其值(value)而言,据我所知,无论如何都是如此 - ViewGroup 不会复制。

关于android - 我可以将 LayoutPrams 与 ViewGroup.addView 重用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10432656/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com