setContentView(R.layout.activity_home_page);
第一个是setContentView,第二个addContentView;首先setContentView 会替换掉之前添加的layout布局,而addContentView可以不继续在同一个activity里面添加多个不同的layout布局,不会出现替换的情况,这里介绍两个使用addContentView的技巧
FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
//设置中间位置
params2.gravity=Gravity.CENTER;
TextView center=new TextView(this);
//字体位于中部
center.setGravity(Gravity.CENTER);
center.setText("中部");
//添加控件
addContentView(center, params2);
FrameLayout.LayoutParams params3 = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
//设置底部
params3.gravity=Gravity.BOTTOM|Gravity.RIGHT;
Button bottom=new Button(this);
//字体位于中部
bottom.setGravity(Gravity.RIGHT);
bottom.setText("底部");
//添加控件
addContentView(bottom, params3);
这是一种使用方法,“FrameLayout”可以根据需要使用自己的layout,首先new对应的layout的layoutParams并设置宽高,之后new自己需要的控件(button,textView..),通过gravity设置对应控件的位置,最后通过addContentView 将控件(button,textView..)和layoutParams作为参数添加到addContentView,这样的开发方式和iOS也是类似的,iOS也是可以直接控件初始化,并设置控件宽高,通过addsubview添加到界面里面,不同的是iOS是通过坐标系,来控制控件的坐标(x,y),在iOS里面是以界面的左上角的那个点作为二维坐标系的原点,向右延伸是x轴,向下延伸是y轴,这里不多做介绍,有兴趣的可自行查找资料。
第二个技巧:
结合LayoutInflater,可以将某一个layout的布局添加到当前activity,这个个人觉得比较很好用,实现方式如下:
LayoutInflater mlayoutInflater = LayoutInflater.from(this); /** * bottom_menu layout file * */ View view = mlayoutInflater.inflate(R.layout.bottom_menu, null); /** * set RelativeLayout width and height * */ RelativeLayout.LayoutParams relLayoutParams=new RelativeLayout.LayoutParams (RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT); this.addContentView(view,relLayoutParams);bottom_menu是layout 文件,里面是布局设置,通过这样的方式可以直接将自己layout文件加载到当前的activity。