動(dòng)態(tài)布局,也就是可以根據(jù)業(yè)務(wù)的需求改變界面。實(shí)際上就是用代碼寫出界面,代碼量比較大。而且維護(hù)起來十分的繁瑣。特別是一些界面空間比較多的時(shí)候。靜態(tài)的布局,是通過xml來實(shí)現(xiàn)的,適用于頁面比較固定的情況。但是維護(hù)起來比較方便。
專注于為中小企業(yè)提供做網(wǎng)站、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)蕭縣免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
設(shè)置imageButtonCursor在底部(因?yàn)橹按丝丶且栏紸控件來設(shè)定位置的,根據(jù)需求A控件要隱藏掉,當(dāng)A控件隱藏的時(shí)候,imageButtonCursor會跑位,所以要這樣動(dòng)態(tài)設(shè)置)
這里要說名的是 imageButtonCursor的父布局是RelativeLayout 否則getLayoutParams強(qiáng)轉(zhuǎn)會報(bào)錯(cuò)的
R.id.horizontalScrollView1為A控件(根據(jù)需求此時(shí)A控件要顯示)顯示出來后
imageButtonCursor有要根據(jù)A控件去找位置 因?yàn)橹霸O(shè)置imageButtonCursor顯示在底部 如果不清除這個(gè)位置則 設(shè)置的相對位置則是無效的 17以上可以用removeRule的方法 為了兼容只能用
如下代碼:
LinearLayout layout = new LinearLayout(this);
TextView tx = new TextView(this);
tx.setText('我是動(dòng)態(tài)添加的');
layout.addView(tx);
setContentView(layout);
這就動(dòng)態(tài)添加了一個(gè)線性布局,并且在布局里面加了一個(gè)textview
可以直接new View來得到View對象來實(shí)現(xiàn)代碼布局。以下為示例代碼:
1.絕對布局
AbsoluteLayout abslayout=new AbsoluteLayout (this);
setContentView(abslayout);
Button btn1 = new Button(this);
btn1.setText(”this is a button”);
btn1.setId(1);
AbsoluteLayout.LayoutParams lp1 =
new AbsoluteLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
0,100);
abslayout.addView(btn1, lp1);
2.相對布局
RelativeLayout relativeLayout = new RelativeLayout(this);
setContentView(relativeLayout);
AbsoluteLayout abslayout=new AbsoluteLayout (this);
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
lp1.addRule(RelativeLayout.ALIGN_PARENT_TOP);
lp1.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
relativeLayout.addView(abslayout ,lp1);
3.線性布局
LinearLayout ll = new LinearLayout(this);
EditText et = new EditText();
ll.addView(et);
//動(dòng)態(tài)添加布局的方法1. LinearLayout ll = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main1,null); setContentView(ll); LinearLayout ll2 = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main2,ll); //這樣 main2 作為 main1的子布局 加到了 main1的 根節(jié)點(diǎn)下
//動(dòng)態(tài)添加布局的方法2 addView. LinearLayout ll = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main1,null); setContentView(ll); LinearLayout ll2 = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main2,null); ll.addView(ll2);
例如設(shè)置一個(gè)圖片寬高 關(guān)鍵代碼:
//取控件當(dāng)前的布局參數(shù)
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) imageView.getLayoutParams();
//設(shè)置寬度值
params.width = dip2px(MainActivity.this, width);
//設(shè)置高度值
params.height = dip2px(MainActivity.this, height);
//使設(shè)置好的布局參數(shù)應(yīng)用到控件
imageView.setLayoutParams(params);
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
高度除了可以設(shè)置成以上固定的值,也可以設(shè)置成wrap_content或match_content
ViewGroup.LayoutParams.WRAP_CONTENT
ViewGroup.LayoutParams.MATCH_PARENT
1
2
1
2
在這里插入圖片描述
xml