1.布局示例代码
public class UseCodeControllLayoutAty extends ActionBarActivity implements View.OnClickListener {
private LinearLayout root;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
root = new LinearLayout(this);
root.setOrientation(LinearLayout.VERTICAL);
setContentView(root);
button = new Button(this);
button.setText("以控件方式添加的button");
root.addView(button);
button = new Button(this);
button.setText("以指定宽,高方式添加的button");
root.addView(button,300,200);
button = new Button(this);
button.setText("以LinearLayout.LayoutParams方式添加的button");
root.addView(button,LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
for(int i = 0 ; i < 5 ;++i){
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
lp.weight = 1;
button = new Button(this);
root.addView(button,lp);
button.setText("remove me");
button.setOnClickListener(this);
}
}
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
@Override
public void onClick(View v) {
root.removeView(v);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_use_code_controll_layout, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
2.注意布局参数
LayoutParams 是布局参数 很重要
LayoutParams有多个,哪个布局就用哪个类下的,不用viewGroup下的
如:
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);