界面布局同样也可以完全手动动态实现而不借助于xml布局文件,但两种方式不可混用,实现方式如下(以linearlayout为例):
1. 在xml文件里面定义的linearlayout等标签可以通过new LinearLayout()的方式来创建,LinearLayout类中有个内部类LayoutParams可以用来设置linearLayout的相关参数
LinearLayout.LayoutParams rlp= new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
LinearLayout.LayoutParams rlp2= new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
// setContentView(R.layout.main);
LinearLayout rl= new LinearLayout(this);
rl.setOrientation(LinearLayout.VERTICAL);
// Button button1=(Button)this.findViewById(R.string.button1);
// button1.setOnClickListener(this );
// Button button2=(Button)this.findViewById(R.string.button2);
Button button1 = new Button(this);
button1.setLayoutParams(rlp);
button1.setText("button1");
Button button2 = new Button(this);
button2.setLayoutParams(rlp2);
button2.setText("button2");
rl.addView(button1);
rl.addView(button2);
setContentView(rl);
2.LinearLayout为viewGroup的子类可以通过其addView方法添加child,子类控件也需要通过new Button()的方式来生成,不可通过findViewById的方式从XML中提取生成(不可混用),最后setContentView统一显示LinearLayout容器及其子对象