iT邦幫忙

DAY 17
5

Android 學習手札系列 第 17

Day 17 - Android - 無中生有

  • 分享至 

  • xImage
  •  

既然是要到前線去,當然是不能只有將領啦~一定是要有夠多的人數才顯得壯觀
可是,要是像昨天的例子,若是我想要有十幾廿個以上的checkbox,一個一個地去拉出會發瘋吧...
要產生一股人多勢眾的感覺,自動化是免不了的,您看在所有遊戲、動畫、漫畫、韓國團體(咦),只要是人多的場景,一定就是一票大眾臉或是都長得一樣的怪,所以今天就來為各位介紹,我們要如何自動化地將沒有被放到介面上面的元素設定上去!

今天依舊延續昨天的範例,請自行延續寫下去,或是再複製一個專案出來成新的專案為「Day17_Choose2」

今天要處理的介面是 activity_moogle2.xml,直接在最下面加入一個垂直式的線性佈局(LinearLayout - vertical)

該線性佈局我們將之命名為"ll_moogles",再來請在strings.xml裡面加入這支複製人部隊

<string-array name="moogles">
    <item>Moogle11</item>
    <item>Moogle12</item>
    <item>Moogle13</item>
    <item>Moogle14</item>
    <item>Moogle15</item>
    <item>Moogle16</item>
    <item>Moogle17</item>
    <item>Moogle18</item>
    <item>Moogle19</item>
    <item>Moogle20</item>
    <item>Moogle21</item>
    <item>Moogle22</item>
    <item>Moogle23</item>
    <item>Moogle24</item>
    <item>Moogle25</item>
    <item>Moogle26</item>
    <item>Moogle27</item>
    <item>Moogle28</item>
    <item>Moogle29</item>
    <item>Moogle30</item>
</string-array>

接著就是要進程式啦,既然這是一個介面,我們就是在setView()的函式裡面,開始寫入我們要定義的物件,首先是要放入的容器,也就是我們今天新增在介面上的線性佈局-ll_moogles

LinearLayout llMoogles = (LinearLayout)findViewById(R.id.ll_moogles);

容器準備好了,再來就是請出我們定義在strings.xml裡的一組字串陣列,要在程式碼裡請出他們來,自然也是要同等的類型

String[] mMoogles = getResources().getStringArray(R.array.moogles);

String[] 是 JAVA 宣告字串陣列的語法
getResources() 是取出我們這個 app 資源的 android 語法
getStringArray(id) 要從資源裡取出這個字串陣列,裡面的 id 就是上述設定的字串陣列名稱嘍!
再來我們每位不同編號的 Moogle 都要讓他是一個 CheckBox 元件駐立在介面之上

//一個迴跑過這個字串陣列
for(int i=0; i<mMoogles.length; i++){
    //定義一個新的 ChecoBox 元件物件
    CheckBox chkMoogle = new CheckBox(this);
    //先給之一個編號
    chkMoogle.setId(i);
    //再授予其名牌
    chkMoogle.setText(mMoogles[i]);
    //請他進入我們的介面容器中嘍
    llMoogles.addView(chkMoogle);
}

這樣就完成了!畫面如下:

當然…
這麼容易就結束的話,就沒有在下的風格了XD

若您有跟著逐步實作的話,在執行結束後,會發現一個問題,
如上圖看到的,最後一位就是 Moogle18,可是咱們明明預先幕到了11到30的 Moogle,
難到其餘的逃走了嗎?

原因是在於,線性的垂直佈局,就只是個很單純地佈局,他能呈現的大小要嘛就是跟著內容(warp_content),再不然就是看母元素還剩多少空間(match_parent)可以讓他伸展,他就給我們看到那麼多而已。

因此,在這種時候,我們需要再搭配另外一個元件來幫助我們解決這個問題。
那個元件稱為"ScroolView",

就如圖中各位所看到的,將他拉到介面上,使之成為原本線性佈局的母元件後,馬上再來執行看看

此時,就能將之"往上滑"看到下面的元素嘍

今天的介紹到此,真的結束嘍XD
程式碼再請各位自行前往 Mosil's GitHub 下載

《Day 16 - Android - 點將 Day 18 - Android - 計數與呈現》


上一篇
Day 16 - Android - 點將
下一篇
Day 18 - Android - 計數與呈現
系列文
Android 學習手札30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
海綿寶寶
iT邦大神 1 級 ‧ 2012-10-11 23:01:23

不知道什麼原因
剛剛開了三次才成功執行 emulator
差點就把電腦砸了
退選這門課
怒

mosil iT邦新手 4 級 ‧ 2012-10-11 23:14:37 檢舉

失神

我要留言

立即登入留言