项目中经常会遇到需要在代码中编写布局的情况,下面简单说下如何在代码中写布局
先看下效果:
看下代码如何实现吧:
import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
public class DemoActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 根布局View,下边所有View都在此RelativeLayout中
RelativeLayout rootLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams rootLayoutParams = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
rootLayout.setLayoutParams(rootLayoutParams);
// 设置在根布局的左上角
RelativeLayout.LayoutParams LTLayoutParams = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
LTLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
LTLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
Button btnLT = new Button(this);
btnLT.setText("左----------上");
btnLT.setId(1);
// 设置在btnLT的下边并且右对齐
RelativeLayout.LayoutParams LTLDLayoutParams = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
LTLDLayoutParams.addRule(RelativeLayout.BELOW, btnLT.getId());
LTLDLayoutParams.addRule(RelativeLayout.ALIGN_RIGHT, btnLT.getId());//设置和btnLT右对齐
Button btnDRD = new Button(this);
btnDRD.setText("底部右对齐");
// 设置在根布局的左下角
RelativeLayout.LayoutParams LDLayoutParams = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
LDLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
LDLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
Button btnLD = new Button(this);
btnLD.setText("左----------下");
// 设置在根布局的右上角
RelativeLayout.LayoutParams RTLayoutParams = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
RTLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);
RTLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
Button btnRT = new Button(this);
btnRT.setText("右----------上");;
// 设置在根布局的右下角
RelativeLayout.LayoutParams RDLayoutParams = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
RDLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
RDLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
Button btnRD = new Button(this);
btnRD.setText("右----------下");
rootLayout.addView(btnLT, LTLayoutParams);
rootLayout.addView(btnLD, LDLayoutParams);
rootLayout.addView(btnRT, RTLayoutParams);
rootLayout.addView(btnRD, RDLayoutParams);
rootLayout.addView(btnDRD, LTLDLayoutParams);
setContentView(rootLayout);
}
}
在res/values/下添加ids.xml(名字可随意)文件,代码如下:
1
2
3
4
|
<?
xml
version="1.0" encoding="utf-8"?>
<
resources
>
<
item
name="my_view" type="id" />
</
resources
>
|
然后在代码中做如下设置即可:
1
|
my_view.setId(R.id.my_view);
|
下面就将verb相关常量名列如下:
relLayoutParams.alignWithParent=true
RelativeLayout.CENTER_HORIZONTAL
RelativeLayout.CENTER_VERTICAL
RelativeLayout.CENTER_IN_PARENT
RelativeLayout.ALIGN_PARENT_BOTTOM
RelativeLayout.ALIGN_PARENT_TOP
RelativeLayout.ALIGN_PARENT_LEFT紧贴父控件的左边边缘
RelativeLayout.ALIGN_PARENT_RIGHT
RelativeLayout.ABOVE
RelativeLayout.BELOW
RelativeLayout.LEFT_OF
RelativeLayout.RIGHT_OF
RelativeLayout.ALIGN_TOP
RelativeLayout.ALIGN_BOTTOM
RelativeLayout.ALIGN_LEFT
RelativeLayout.ALIGN_RIGHT
RelativeLayout.ALIGN_BASELINE