android開發 5 動態生成控制項

2021-09-06 03:43:02 字數 2432 閱讀 6542

我們以前的幾個例子中都是直接使用設計器來製作的表單檢視,實際在開發中經常會遇到使用**來動態的新增控制項到檢視中。一般情況下的步驟是:

1.生成乙個控制項,比如new button。

2.設定控制項的各種屬性,比如 設定某個button的顯示文字,繫結事件等。

3.將這個控制項追加到乙個容器控制項中,作為這個容器控制項的子控制項。比如:view.addview(...).

4.在追加的父控制項內時,可以指定布局的方式。

在動態新增完畢後,我們還需要能夠獲得對這些動態新增後的控制項的值。比如我新增乙個文字框,我還想獲得使用者在這個文字框裡填入的值。android的view控制項裡,都有個屬性tag,我們可以很方便的使用這個屬性來存放我們的特殊標記,用這個特殊標記來標記我們的控制項。

獲取控制項的步驟:

1.獲得容器控制項

2.遍歷容器控制項的包含的所有子控制項,根據我們設定的標識tag屬性,或者判斷控制項的型別來找到我們想要的控制項

3.從找到的控制項裡讀取到我們想要的值。

4.將收集到的值儲存或其他處理

//下面是生成表單的操作

for(

inti =0

; i<

5; i++)

_pnlcontent.setcolumnstretchable(1,

true);

上面的**演示了建立多個tablerow控制項的過程,tablerow是tablelayout的子控制項。我們會在介面上放置乙個tablelayout控制項,然後在動態建立tablerow,tablelayout是個**布局,tablerow**裡的行。也就是說,我們放置了乙個靜態的**,然後動態的建立這個**裡的行。

layoutparams 是布局引數的意思。在將建立好的子控制項新增到它的父容器控制項時,可以同時指定乙個布局引數。這個布局引數指示了這個子控制項如何在父容器控制項裡呈現。

layoutparams 的其中乙個構造方法接受兩個引數,指示了寬和高的布局,我們可以指定

viewgroup.layoutparams.wrap_content,以自身內容大小自動適應

viewgroup.layoutparams.fill_parent, 填充父容器

setcolumnstretchable是tablerow的方法,它指示了第2列(列索引為1)是可以拉伸的。

從檢視中讀取控制項的內容:

我們在乙個按鈕的單擊事件裡寫下這樣的**

如上面的**顯示。我們遍歷容器控制項,使用方法getchildat(0);獲得指定索引的子控制項,合理轉型後為我們所用。我們還可以使用tag存放我們的額外資訊。

在開發過程中還會遇到使用**的方式來設定單元格的合併,方法如下:

layoutparams layoutparams2 

=null

;layoutparams2 

=new

layoutparams(viewgroup.layoutparams.fill_parent,viewgroup.layoutparams.wrap_content);

//判斷 typedesc的型別生成控制項

tablerow row 

=null

;button btnremove 

=null

;row 

=new

tablerow(getcontext());

edittext edittext 

=null

;edittext 

=new

edittext(getcontext());

tablerow.layoutparams rowspanlayout 

=new

tablerow.layoutparams(

tablerow.layoutparams.fill_parent, 

tablerow.layoutparams.wrap_content);

rowspanlayout.span =

2;

edittext.setlayoutparams(rowspanlayout);

btnremove 

=newbutton(getcontext());

btnremove.settext("-

");row.addview(edittext);

row.addview(btnremove);

tabllelayout.addview(row,layoutparams2);

android動態生成控制項

方法 呼叫布局容器的addview,addview需傳入的引數就是你想放置的view 這裡給出乙個例子 final linearlayout layout new linearlayout this layout.setorientation linearlayout.vertical setcon...

編譯ffmpeg生成Android動態庫

在windows 7 64位,ndk r9下編譯多次不成功,根據報錯內容在網上搜尋依舊無果後嘗試更換系統和ndk 系統版本 ubuntu12.04虛擬機器 ndk版本 android ndk r8e linux 參考文章 ffmpeg 1.2 for android 生成乙個動態庫 更改prebui...

HTML5開發Android程式

v3.5正式版 開源免費 含mac os版 最新版本日期 2016 07 08 定位 開發面向消費者和公眾的開放應用系統 後端 後端資料處理元件,對接各主流技術平台 費用 完全開源,徹底免費,無任何限制 歷史版本 wex5開發指南 wex5常見問題 更多 最新版本日期 2016 07 08 定位 開...