Android 程式開發:(九)用戶界面 —— 9.1 純編碼實現UI

到目前為止,在所有的章節中,我們所看見的UI都是通過XML來實現的。之前也提及過,除瞭使用XML,也可以使用代碼來實現UI界面。這個方式是很有用的,比如你的UI需要在運行時被生成。舉個例子,假設你在編寫一個“電影票的預定系統”,你的程序使用按鈕Buttons去顯示每個電影院的座位。在這種情況下,你就會需要依據實際情況去動態地生成UI。

下面的例子將會展示如何通過編碼,動態地在Activity中生成UI。

1、創建一個工程:UICode。

2、UICodeActivity.java中的代碼。

[java]
public class UICodeActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        //setContentView(R.layout.main); 
        // 視圖的參數 
        LayoutParams params =  
            new LinearLayout.LayoutParams( 
                LayoutParams.FILL_PARENT, 
                LayoutParams.WRAP_CONTENT); 
 
        // 創建佈局 
        LinearLayout layout = new LinearLayout(this); 
        layout.setOrientation(LinearLayout.VERTICAL); 
 
        // 創建一個TextView 
        TextView tv = new TextView(this); 
        tv.setText("This is a TextView"); 
        tv.setLayoutParams(params); 
 
        // 創建一個Button 
        Button btn = new Button(this); 
        btn.setText("This is a Button"); 
        btn.setLayoutParams(params); 
                         
        // 向佈局中添加TextView 
        layout.addView(tv); 
 
        // 向佈局中添加Button 
        layout.addView(btn); 
 
        // 創建佈局使用的屬性 
        LinearLayout.LayoutParams layoutParam =  
            new LinearLayout.LayoutParams( 
                    LayoutParams.FILL_PARENT, 
                    LayoutParams.WRAP_CONTENT ); 
 
        this.addContentView(layout, layoutParam); 
    } 

3、按F11調試,效果圖如下。

 

在這個例子中,首先要把setContentView()方法註釋掉,目的是不讓Activity去加載main.xml中的UI視圖。

然後,創建一個LayoutParams對象,這個對象指定瞭佈局的屬性。

[java] 
LayoutParams params =  
    new LinearLayout.LayoutParams( 
        LayoutParams.FILL_PARENT, 
        LayoutParams.WRAP_CONTENT); 
也要創建一個LinearLayout對象,這個對象包含瞭activity中的所有視圖。
[java] 
LinearLayout layout = new LinearLayout(this); 
layout.setOrientation(LinearLayout.VERTICAL); 
然後,創建一個TextView和一個Button。
[java]
TextView tv = new TextView(this); 
tv.setText("This is a TextView"); 
tv.setLayoutParams(params); 
 
Button btn = new Button(this); 
btn.setText("This is a Button"); 
btn.setLayoutParams(params); 
然後,把它們加到LinearLayout對象中去。
[java] 
layout.addView(tv); 
 
layout.addView(btn); 
同時,也要創建一個LayoutParams對象,供LinearLayout對象使用。
[java]
LinearLayout.LayoutParams layoutParam =  
    new LinearLayout.LayoutParams( 
            LayoutParams.FILL_PARENT, 
            LayoutParams.WRAP_CONTENT ); 
最後,把這個LinearLayout對象添加到Activity中去。
[java] 
this.addContentView(layout, layoutParam); 

發佈留言