很多时候我们在写Android布局都是在xml里写,但是有时候在xml里写满足不了我们的需要,这时候我们就需要在代码中来写我们的布局了。那么,在代码中我们怎么来写呢?
今天碰巧需要用到,所以就简单写一写。(有不足之处请指正,谢谢)
首先,我们熟悉的,新建Activity的时候开始我们都会有如下写法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
这里的setContentView(R.layout.main)
就是我们需要的布局文件。那么,如果我们把这里的R.layout.main
换成自己的布局不就OK了吗?
好,我们开始。
先从我们熟悉的LinearLayout开始
我用自己的LinearLayout替换R.layout.main
,一般我们在xml里都是这么写:
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</LinearLayout>
所以,在代码中,我们需要设置orientation
和宽高你这里需要用到一个LayoutParams
,它是用来设置我们布局的位置大小。所以:
//我们先new一个LinearLayout
LinearLayout linearlayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
//布局位置样式
LinearLayout.LayoutParams linParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
linearlayout .setLayoutParams(linParams);
这样我们就把最外层的布局写出来了(线性布局,相对布局等大同小异),现在我们往里边添加控件:
//添加一个TextView
TextView textView1 = new TextView(this);
//设置样式和xml差不多,不多讲
textView1.setText("Test TextView1")
textView1.setTextSize(18);
//同样,也需要设置TextView的位置大小
LinearLayout.LayoutParams text1Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
//将textVIew1添加进LinearLayout布局
linearlayout .addView(textView1,text1Params );
//OK我们已经将我们的布局添加进了LinearLayout,最后,非常最要的一步千万别忘
setContentView(linearlayout );
这样我们就算完成了,还算简单。LinearLayout就说这么多吧。下面我们说RelativeLayout,相对来说比LinearLayout复杂一点点。
RelativeLayout
废话不多说,直接来:
RelativeLayout relativeLayout = new RelativeLayout(this);
relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
//写两个BUTTON
Button button = new Button(this);
button.setText("button");
button.setTextSize(25);
//setId这一很重要,因为在RelativeLayout我们都是根据ID来确定各自的位置的
button.setId(1);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
relativeLayout.addView(button,layoutParams);
Button button2 = new Button(this);
button2.setTextSize(25);
button2.setText("button2");
button2.setId(2);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
//将第二个Button放在第一个Button右边(照葫芦画瓢,上下左右随便放)
layoutParams.addRule(RelativeLayout.RIGHT_OF,1);
relativeLayout.addView(button2,layoutParams);
setContentView(relativeLayout);
截图有点渣,将就看,这样就完成了。简单吧。好了,代码布局就说到这里,其他的布局相对这两个来说用的很少,有兴趣的去研究研究吧。
纯手打,请勿粘贴复制,出错不负责
!
!
!
!
!