1 简介
Android应用开发中,我们可以使用xml布局文件来定义控件。事实上,我们也可以在java代码中进行控件的添加。
2 举例:
在LinearLayout中动态添加2个垂直排列的Button:
OnClickListener listen1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.main); //布局文件xml final LinearLayout layout2=new LinearLayout(this); layout2.setOrientation(LinearLayout.VERTICAL); setContentView(layout2); Button btn1=new Button(this); Button btn2=new Button(this); btn1.setText("Button1"); btn2.setText("Button2"); layout2.addView(btn1); layout2.addView(btn2); setContentView(layout2); //设置点击事件 listen1 = new OnClickListener() { public void onClick(View v) { setTitle("点击button1 "); Button btn3=new Button(v.getContext()); layout2.addView(btn3); //再添加一个Button btn3.setText("Button3"); } }; btn1.setOnClickListener(listen1); }
说明:
(1)先创建一个顶层的Layout,并且指定排列方式为垂直排列:
final LinearLayout layout2=new LinearLayout(this);
layout2.setOrientation(LinearLayout.VERTICAL);
(2)再创建需要添加的Button:
Button btn1=new Button(this);
Button btn2=new Button(this);
(3)添加控件到Layout:
layout2.addView(btn1);
layout2.addView(btn2);
(4)给控件添加点击事件:
//设置点击事件
listen1 = new OnClickListener() {
public void onClick(View v) {
setTitle("点击button1 ");
Button btn3=new Button(v.getContext());
layout2.addView(btn3); //再添加一个Button
btn3.setText("Button3");
}
};
btn1.setOnClickListener(listen1);
说明:
需要注意的一点是 Button btn3=new Button(v.getContext);参数v.getContext为当前view的context,为什么例子1中用this作为context呢,呵呵,这是因为this即当前的activity,而activity又是context的子类,所以this就可以直接作为activity了。
3 附:
Context的派生类:
java.lang.Object
-->android.content.Context
-->ContextWrapper , MockContext
--> AbstractInputMethodService , Activity , ActivityGroup , AliasActivity , Application , ContextThemeWrapper ,ExpandableListActivity , InputMethodService , IntentService , IsolatedContext , LauncherActivity , ListActivity ,MockApplication , MutableContextWrapper , PreferenceActivity , RenamingDelegatingContext , Service ,TabActivity