【Android 开发教程】纯编码实现UI

本文介绍如何在Android应用中不使用XML而通过代码动态创建UI。示例中展示了如何使用Java创建LinearLayout,并添加TextView和Button组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。

原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/


到目前为止,在所有的章节中,我们所看见的UI都是通过XML来实现的。之前也提及过,除了使用XML,也可以使用代码来实现UI界面。这个方式是很有用的,比如你的UI需要在运行时被生成。举个例子,假设你在编写一个“电影票的预定系统”,你的程序使用按钮Buttons去显示每个电影院的座位。在这种情况下,你就会需要依据实际情况去动态地生成UI。

下面的例子将会展示如何通过编码,动态地在Activity中生成UI。

1.  创建一个工程:UICode。

2.  UICodeActivity.java中的代码。

[java] view plain copy
  1. public class UICodeActivity extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         //setContentView(R.layout.main);  

  7.         LayoutParams params =   
  8.             new LinearLayout.LayoutParams(  
  9.                 LayoutParams.FILL_PARENT,  
  10.                 LayoutParams.WRAP_CONTENT);  
  11.  
  12.         LinearLayout layout = new LinearLayout(this);  
  13.         layout.setOrientation(LinearLayout.VERTICAL);  
  14.   
  15.         TextView tv = new TextView(this);  
  16.         tv.setText("This is a TextView");  
  17.         tv.setLayoutParams(params);  

  18.         Button btn = new Button(this);  
  19.         btn.setText("This is a Button");  
  20.         btn.setLayoutParams(params);  
  21.                           
  22.         layout.addView(tv);  
  23.   
  24.         layout.addView(btn);  
  25.   
  26.         LinearLayout.LayoutParams layoutParam =   
  27.             new LinearLayout.LayoutParams(  
  28.                     LayoutParams.FILL_PARENT,  
  29.                     LayoutParams.WRAP_CONTENT );  
  30.   
  31.         this.addContentView(layout, layoutParam);  
  32.     }  
  33. }  

3. 按F11调试,效果图如下。


在这个例子中,首先要把setContentView()方法注释掉,目的是不让Activity去加载main.xml中的UI视图。

然后,创建一个LayoutParams对象,这个对象指定了布局的属性。

[java] view plain copy
  1. LayoutParams params =   
  2.     new LinearLayout.LayoutParams(  
  3.         LayoutParams.FILL_PARENT,  
  4.         LayoutParams.WRAP_CONTENT);  
也要创建一个LinearLayout对象,这个对象包含了activity中的所有视图。
[java] view plain copy
  1. LinearLayout layout = new LinearLayout(this);  
  2. layout.setOrientation(LinearLayout.VERTICAL);  
然后,创建一个TextView和一个Button。
[java] view plain copy
  1. TextView tv = new TextView(this);  
  2. tv.setText("This is a TextView");  
  3. tv.setLayoutParams(params);  
  4.   
  5. Button btn = new Button(this);  
  6. btn.setText("This is a Button");  
  7. btn.setLayoutParams(params);  
然后,把它们加到LinearLayout对象中去。
[java] view plain copy
  1. layout.addView(tv);  
  2.   
  3. layout.addView(btn);  
同时,也要创建一个LayoutParams对象,供LinearLayout对象使用。
[java] view plain copy
  1. LinearLayout.LayoutParams layoutParam =   
  2.     new LinearLayout.LayoutParams(  
  3.             LayoutParams.FILL_PARENT,  
  4.             LayoutParams.WRAP_CONTENT );  
最后,把这个LinearLayout对象添加到Activity中去。
[java] view plain copy
  1. this.addContentView(layout, layoutParam); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值