修改一个LayoutParams,使用这个LayoutParams的所有View都会为此而改变……应该是使用这个布局参数后,所有View都是指向同一个地址(我建的这个布局参数的地址),所有我改变了这个地址中的值后,所有指向此地址的View视图自然就都会改变。
看我的代码
……
//父布局是帧布局
FrameLayout.LayoutParams itemLayoutParams=new FrameLayout.LayoutParams(200,300);
//第一次设置了这个布局参数的topMargin值
itemLayoutParams.topMargin=200;
itemLayoutParams.gravity=Gravity.TOP|Gravity.RIGHT;
//这里的意思是新建了个视图,运用了这个布局参数
textView=getNewTextView(context,"关闭",18f,0xffff0000,itemLayoutParams);
//然后我修改这个布局参数的margin值后在应用给另外一个视图
itemLayoutParams.topMargin=0;
textView =getNewTextView(context,"item4",18f,0xffff0000,itemLayoutParams);
……
结果重叠在了一起,看上去好像两个view的topMargin都是0
然后我调整了下我的创建视图方法后
private TextView getNewTextView(Context context, String text, float size, int color, int background, FrameLayout.LayoutParams layoutParams){
TextView textView=new TextView(context);
textView.setText(text);
textView.setTextSize(size);
textView.setTextColor(color);
textView.setBackgroundColor(background);
//用一个新的布局参数把传递过来的布局参数接收,也就是新开辟了一个地址,让这个视图指向新的布局参数地址
FrameLayout.LayoutParams lP=new FrameLayout.LayoutParams(layoutParams);
textView.setLayoutParams(lP);
return textView;
}
把第二视图的布局参数指向一个新地址后,结果就是我想要的了