Android中利用LinearLayout动态添加控件- Androider的专栏-...在androidUI布局中,一般都是利用xml来布局控件,这是比较方便和直观的,但是有时却需要动态生成,下面就举2个简单例子来说明怎么动态添加控件:1.动态添加2个垂直排列的Buttonview plaincopy to clipboardprint?01. @Override02. public void onCreate(Bundle savedInstanceState) {03. super.onCreate(savedInstanceState);04. //setContentView(yout.main);05. final LinearLayout layout2=newLinearLayout(this);06.layout2.setOrientation(LinearLayout.VERTICAL);07. Button btn1=new Button(this);08. setContentView(layout2);09. Button btn2=new Button(this);10. btn1.setText("Button1");11. btn2.setText("Button2");12. layout2.addView(btn1);13. layout2.addView(btn2);14.15.16. setContentView(layout2);17.}@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);//setContentView(yout.main);final LinearLayout layout2=new LinearLayout(this);layout2.setOrientation(LinearLayout.VERTICAL);Button btn1=new Button(this);setContentView(layout2);Button btn2=new Button(this);btn1.setText("Button1");btn2.setText("Button2");layout2.addView(btn1);layout2.addView(btn2);setContentView(layout2);}final LinearLayout layout2=new LinearLayou(this);定义一个LinearLayout ,参数为context在这儿即为this layout2.setOrientation(LinearLayout.VERTICAL);设置layout格式为vertical,竖直排列2.在Button的click事件中动态添加一个buttonview plaincopy to clipboardprint?········ ·10······ 3;·20······ 83;·30······&# 183;·40······& #183;·50······ ··60····· 3;··70····· 83;··80·····&# 183;··90·····& #183;··100···· 3;··110·····&# 183;·120······ ·130······ 83;140·······1 5001.OnClickListener listen1;02. @Override03. public void onCreate(Bundle savedInstanceState) {04. super.onCreate(savedInstanceState);05. //setContentView(yout.main);06. final LinearLayout layout2=newLinearLayout(this);07.layout2.setOrientation(LinearLayout.VERTICAL);08. Button btn1=new Button(this);09. setContentView(layout2);10. Button btn2=new Button(this);11. btn1.setText("Button1");12. btn2.setText("Button2");13. layout2.addView(btn1);14. layout2.addView(btn2);15. listen1 = new OnClickListener() {16. public void onClick(View v) {17. setTitle("点击button1 ");18. Button btn3=new Button(v.getContext());19. layout2.addView(btn3);20. btn3.setText("Button3");21.22.23. }24. };25. btn1.setOnClickListener(listen1);26. }OnClickListener listen1;@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);//setContentView(yout.main);final LinearLayout layout2=new LinearLayout(this);layout2.setOrientation(LinearLayout.VERTICAL);Button btn1=new Button(this);setContentView(layout2);Button btn2=new Button(this);btn1.setText("Button1");btn2.setText("Button2");layout2.addView(btn1);layout2.addView(btn2);listen1 = new OnClickListener() {public void onClick(View v) {setTitle("点击button1 ");Button btn3=new Button(v.getContext());layout2.addView(btn3);btn3.setText("Button3");}};btn1.setOnClickListener(listen1);}与上一例子区别就是,在Button的OnClickListener中动态添加控件,需要注意的一点是Button btn3=newButton(v.getContext);参数v.getContext为当前view的context,为什么例子1中用this作为context呢,呵呵,这是因为this即当前的activity,而activity又是context的子类,所以this就可以直接作为activity了。
查了下,context派生的类有:ng.Objectandroid.content.ContextKnown Direct SubclassesContextWrapper , MockContextContextWrapper Proxying implementation of Context that simply delegates all of its calls to another Context.MockContext A mock Context class.Known Indirect Subclasses AbstractInputMethodService , Activity , ActivityGroup , AliasActivity , Application , ContextThemeWrapper , ExpandableListActivity , InputMethodService , IntentService , IsolatedContext , LauncherActivity , ListActivity , MockApplication , MutableContextWrapper , PreferenceActivity , RenamingDelegatingContext , Service , TabActivity本文来自CSDN博客,转载请标明出处:/zcpangzi/archive/2010/03/26/5420805. aspx本文来自CSDN博客,转载请标明出处:/zcpangzi/archive/2010/03/26/5420805. aspx本文来自CSDN博客,转载请标明出处:/zcpangzi/archive/2010/03/26/5420805. aspx。