方法一 :先用xml文件进行静态布局,然后利用反射器LayoutInflater类调用方法getLayoutInflater()获取对象,将容器对象加载到VIEW类里,设置监听
LayoutInflater inflater =getLayoutInflater();
LinearLayout ly = (LinearLayout) inflater.inflate(R.layout.testview,null);
setContentView(ly);
Button testbtn = (Button)ly.findViewById(R.id.testBtn);
final TextView dispalyView = (TextView)ly.findViewById(R.id.disPlayView);
testbtn.setOnClickListener(new View.OnClickListener()
{ @Override
public void onClick(View v)
{ dispalyView.setText("测试");
}
});
方法二:利用getSystemService(LAYOUT_INFLATER_SERVICE)获取布局文件
LayoutInflater inflater =(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
LinearLayout ly = (LinearLayout) inflater.inflate(R.layout.testview,null);
setContentView(ly);
Button testbtn = (Button)ly.findViewById(R.id.testBtn);
final TextView dispalyView = (TextView)ly.findViewById(R.id.disPlayView);
testbtn.setOnClickListener(new View.OnClickListener()
{ @Override
public void onClick(View v) {
} });
方法三:
无需静态布局实现测试效果
LinearLayout ly =new LinearLayout(this);
ly.setOrientation(LinearLayout.VERTICAL);
ly.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
//设置控件
final TextView dispalyView = new TextView(this);
dispalyView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); dispalyView.setText("测试"); //可以设置相关属性
ly.addView(dispalyView);
Button button1 = new Button(this);
button1.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); button1.setText("测试按钮1");
ly.addView(button1);
button1.setOnClickListener(new View.OnClickListener() //监听
{ @Override
public void onClick(View v) {
} });
setContentView(ly);//加载LinearLayout对象
LayoutInflater是用来找layout下的xml布局文件,并且实例化;而findViewById()是找xml布局文件的具体控件,如Button、TextView等。