到目前为止,在所有的章节中,我们所看见的UI都是通过XML来实现的。之前也提及过,除了使用XML,也可以使用代码来实现UI界面。这个方式是很有用的,比如你的UI需要在运行时被生成。举个例子,假设你在编写一个“电影票的预定系统”,你的程序使用按钮Buttons去显示每个电影院的座位。在这种情况下,你就会需要依据实际情况去动态地生成UI。
下面的例子将会展示如何通过编码,动态地在Activity中生成UI。
1、创建一个工程:UICode。
2、UICodeActivity.java中的代码。
- publicclassUICodeActivityextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- //setContentView(R.layout.main);
- //视图的参数
- LayoutParamsparams=
- newLinearLayout.LayoutParams(
- LayoutParams.FILL_PARENT,
- LayoutParams.WRAP_CONTENT);
- //创建布局
- LinearLayoutlayout=newLinearLayout(this);
- layout.setOrientation(LinearLayout.VERTICAL);
- //创建一个TextView
- TextViewtv=newTextView(this);
- tv.setText("ThisisaTextView");
- tv.setLayoutParams(params);
- //创建一个Button
- Buttonbtn=newButton(this);
- btn.setText("ThisisaButton");
- btn.setLayoutParams(params);
- //向布局中添加TextView
- layout.addView(tv);
- //向布局中添加Button
- layout.addView(btn);
- //创建布局使用的属性
- LinearLayout.LayoutParamslayoutParam=
- newLinearLayout.LayoutParams(
- LayoutParams.FILL_PARENT,
- LayoutParams.WRAP_CONTENT);
- this.addContentView(layout,layoutParam);
- }
- }
3、按F11调试,效果图如下。
在这个例子中,首先要把setContentView()方法注释掉,目的是不让Activity去加载main.xml中的UI视图。
然后,创建一个LayoutParams对象,这个对象指定了布局的属性。
- LayoutParamsparams=
- newLinearLayout.LayoutParams(
- LayoutParams.FILL_PARENT,
- LayoutParams.WRAP_CONTENT);
- LinearLayoutlayout=newLinearLayout(this);
- layout.setOrientation(LinearLayout.VERTICAL);
- TextViewtv=newTextView(this);
- tv.setText("ThisisaTextView");
- tv.setLayoutParams(params);
- Buttonbtn=newButton(this);
- btn.setText("ThisisaButton");
- btn.setLayoutParams(params);
- layout.addView(tv);
- layout.addView(btn);
- LinearLayout.LayoutParamslayoutParam=
- newLinearLayout.LayoutParams(
- LayoutParams.FILL_PARENT,
- LayoutParams.WRAP_CONTENT);
- this.addContentView(layout,layoutParam);