很多時候我們在寫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>
所以,在代碼中蚀乔,我們需要設(shè)置orientation
和寬高你這里需要用到一個LayoutParams
烁竭,它是用來設(shè)置我們布局的位置大小。所以:
//我們先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);
這樣我們就把最外層的布局寫出來了(線性布局吉挣,相對布局等大同小異)派撕,現(xiàn)在我們往里邊添加控件:
//添加一個TextView
TextView textView1 = new TextView(this);
//設(shè)置樣式和xml差不多,不多講
textView1.setText("Test TextView1")
textView1.setTextSize(18);
//同樣睬魂,也需要設(shè)置TextView的位置大小
LinearLayout.LayoutParams text1Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
//將textVIew1添加進(jìn)LinearLayout布局
linearlayout .addView(textView1,text1Params );
//OK我們已經(jīng)將我們的布局添加進(jìn)了LinearLayout终吼,最后,非常最要的一步千萬別忘
setContentView(linearlayout )氯哮;
這樣我們就算完成了际跪,還算簡單。LinearLayout就說這么多吧喉钢。下面我們說RelativeLayout姆打,相對來說比LinearLayout復(fù)雜一點點。
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我們都是根據(jù)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);
截圖有點渣舔痕,將就看评抚,這樣就完成了豹缀。簡單吧。好了慨代,代碼布局就說到這里邢笙,其他的布局相對這兩個來說用的很少,有興趣的去研究研究吧侍匙。
純手打氮惯,請勿粘貼復(fù)制,出錯不負(fù)責(zé)
想暗!
妇汗!
!
说莫!
杨箭!