一般來說,我們在建立Android視圖時,會透過工具直接對xml進行編輯
並在onCreate中設置setContentView(R.layout.main);直接建立視圖
只是就我個人習慣,還是喜歡敲代碼來弄這些東西
所以今天學習了一下怎麼如何直接使用代碼建立Android視圖並加入控件
首先先看這幾張圖,Activity中只有一個setContentView的函數,由此推斷,Activity僅有一個View的成員
而ViewGroup是可以放入多個View的集合類別,因此若是我們要建立視圖,Activity下的第一層必定要是ViewGroup或其子類
由此可知,要客制自己的復合視圖控件,就只能透過ViewGroup來實踐
代碼示例:
[java]
- public class LEDTestActivity extends Activity {
-
- LinearLayout m_layout;
- private Button m_btnOn;
- private Button m_btnOff;
-
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //setContentView(R.layout.main);
- m_layout = new LinearLayout(this);
- m_btnOn = new Button(this);
- m_btnOn.setText("ON");
- m_btnOn.setWidth(300);
- m_btnOff = new Button(this);
- m_btnOff.setText("OFF");
- m_btnOff.setWidth(300);
- m_btnOn.setOnClickListener(new Button.OnClickListener(){
- public void onClick(View v) {
- // TODO Auto-generated method stub
-
- }});
- m_btnOff.setOnClickListener(new Button.OnClickListener(){
- public void onClick(View v) {
- // TODO Auto-generated method stub
-
- }});
- m_layout.setHorizontalFadingEdgeEnabled(false);
- m_layout.setVerticalFadingEdgeEnabled(true);
- m_layout.addView(m_btnOff);
- m_layout.addView(m_btnOn);
- setContentView(m_layout);
- }
- }
在代碼中,我直接建立LinearLayout,並將二個按鈕元件放入LinearLayout中,並呼叫Activity的setContentView設定為m_layout
如此一來一個最簡單的范例就達成了