addContentView(View,LayoutParams)和setContentView(View)的区别
麻烦大家解答一下,addContentView(View,LayoutParams)和setContentView(View)的区别.特别是在代码布局中有何区别。比如:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout l1 = new LinearLayout(this);
l1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
l1.setOrientation(LinearLayout.VERTICAL);
l1.setBackgroundColor(Color.RED);
Button b1 = new Button(this);
b1.setText("Ok");VB图书管理系统论文
LinearLayout.LayoutParams ll1 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
LinearLayout.LayoutParams ll2 = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
ll1.topMargin= 50;
ll1.leftMargin = 100;
l1.addView(b1, ll1);
addContentView(l1, ll2);//区别在哪
setContentView(l1);//区别在哪
}
如果Activity已经有Content View了,addContentView会把新的View加在老的View后面,setContentView会把老的View删了再加新的View
两者的区别主要包括两点:
1. 以添加UI组件是否被移除
setContentView() 会导致先前添加的被移除, 即替换性的;
而 addContentView() 不会移除先前添加的UI组件,即是累积性的
2. 是否控制布局参数
addContentView() 有两个参数, 可以控制布局参数; 你指出的这个setContentView 没有接受布局参数,
默认使用MATCH_PARENT; 不过setContentView()也有带两个参数的版本, 可以控制布局参数。