[教學] 手機APP開發入門--14. 格狀排列 - 討論區

[教學] 手機APP開發入門--14. 格狀排列

文章瀏覽次數 1688 文章回覆數 11

coscell

coscell圖像(預設)

2019-12-29 11:07:41

From:123.193.249.19

之前一直用 Stack Layout 已經有讀者不耐煩了,現在就來介紹 Grid Layout 格狀排列。
NativeScript 總共提供5種畫面不覺模式,其中 Stack 和 Grid 使用情況超過 95%,
所以其他3種 Absolute, Dock 和 Wrap 為了加快進度就暫時不講,
等將來有機會在說,或著您自己參考官方說明.

Grid Layout 的定義格式如下:

<GridLayout rows="*,*,*" columns="*,*" width="300" height="450">
  ... //填充內容 
</GridLayout>

屬性說明如下:

  • rows: 定義行數(縱向)
  • columns: 定義列數(橫向)
  • width: 畫面寬度
  • height: 畫面高度

這是最普通的格式,每個格子大小相同。
另外還有兩種更複雜細緻的定義格式,可以分別定義每個格子的大小,這裡也先暫時掠過。

上面範例在寬 300, 高 450 點(像素)的畫面上分隔出直3橫2總共6個格子,
每個格子都一樣長寬都是 150 點。
這6個格子的座標分別是 (0,0), (0,1), (1,0), (1,1), (2,0), (2,1).
下面我們舊來時做這個畫面。

請在 home.xml 新增一個『我的其他作品』按鈕,作用是跳轉到 product 畫面。
product.xml 內容如下:

<Page>
  <GridLayout rows="*,*,*" columns="*,*" width="300" height="450">
    <Button row="0" col="0" text="猜數字"/>
    <Button row="0" col="1" text="計算機"/>
    <Button row="1" col="0" text="圈差遊戲"/>
    <Button row="1" col="1" text="戳戳樂"/> 
    <Button row="2" col="0" text="點點愛"/>
    <Button row="2" col="1" text="明盤欣賞"/>
  </GridLayout>
</Page>

GridLayout 如果要針對每一格套用兩個以上的元件標籤就必須套疊 StackLayout, 像這樣:

<GridLayout rows="*,*,*" columns="*,*" width="300" height="450">
  <StackLayout row="0" col="0" style="background-color: #CCCCCC">
    <Label text="針對這一格加上背景顏色和圖片" textWrap="true" />
    <Image src="MyPicture" width="75" height="75" />
  </StackLayout>
</GridLayout>

走到這裡應該要講講 CSS 美編部份了,可惜這不是我的專長再加上對我也確實有視力的限制,所以打算暫時跳過。
還好這種資料網路上並不難找,有需要就去找找吧。
不然就要等我公立進步了再回頭來講。

使用者界面部份當然不只這些內容,但是基於這是入門課程,
為了帶領大家早日登堂入室,暫時就此打住。
接下來就要往技術核心部份邁進,不怕苦的就繼續跟我走吧!
※最後更新時間:2019-12-29 11:57:15 From:123.193.249.19 By:coscell

留言

#1

特種兵

特種兵圖像(預設)

2019-12-29 11:28:23

From:1.161.142.173

想確認一下在範例中是寫 StackLayout
但在內文中是說要用 SlackLayout
是不是其中一方有錯?

#2

coscell

coscell圖像(預設)

2019-12-29 11:45:35

From:123.193.249.19

沒看到 SlackLayout 啊

#3

特種兵

特種兵圖像(預設)

2019-12-29 14:35:57

From:1.161.142.173

可能我看錯,或者後來改掉了,感謝

#4

特種兵

特種兵圖像(預設)

2019-12-29 15:48:59

From:1.161.142.173

請問想讓一個元素跨兩個欄(橫向)應該怎麼下參數?感謝

#5

coscell

coscell圖像(預設)

2019-12-29 18:50:14

From:123.193.249.19

row="0" col="0" rowSpan="1" colSpan="2"
預告一下後面的內容向天書看不懂需要暫時停課

#6

特種兵

特種兵圖像(預設)

2019-12-29 23:02:50

From:1.161.142.173

那這邊提出幾個待解決的問題好了:

  1. 要怎麼將按鈕固定在畫面下方,不要隨著捲動而捲動,之前只成功放於上方
  2. 在同一個頁面使用 GridLayout 的架構似乎就必須整個外層都用他來設計
    在關於我中,要怎麼讓 ScrollView 與 GridLayout 搭配使用,也就是我按鈕固定放上面,下面都給多行 label 捲動
    實測 ScrollView 那段會出不來
  3. 發現使用 GridLayout 來佈局畫面時,畫面上方會有一個區塊是空白的,元件會從比較中間的地方開始,
    這部分應該怎麼修正?
  4. 在開發過程中被 cache 整的很慘,經常需要中斷 tns run android 這部分有辦法下參數解決嗎

#7

coscell

coscell圖像(預設)

2019-12-30 08:57:50

From:123.193.249.19

我跟你一樣釋出學者,我們一起研究,有找到資源在互通有無。

#8

coscell

coscell圖像(預設)

2019-12-30 10:28:57

From:123.193.249.19

  1. 發現使用 GridLayout 來佈局畫面時,畫面上方會有一個區塊是空白的,元件會從比較中間的地方開始, 這部分應該怎麼修正?
    試試看 verticalAlignment="top"
    我沒實際冊過,純屬紙上談兵。

#9

特種兵

特種兵圖像(預設)

2019-12-30 21:02:19

From:1.161.142.173

靠上參數有效
也發現上面會留空跟元素比較少也有關係
如果直向排列元素多的話他就會自動靠上了
調一調版面總算稍微滿意了
也發現全盲視障者使用手機直接觸屏可以實際摸到元件的位置,感覺上比在電腦前設計UI輕鬆很多

#10

特種兵

特種兵圖像(預設)

2019-12-31 14:21:03

From:211.23.21.202

我想知道若想直接寫js或jquery要怎麼弄?
如果可以的話,我們就不會受到太多限制了

#11

coscell

coscell圖像(預設)

2019-12-31 19:44:48

From:123.193.249.19

那就直接寫網頁啊,要寫APP還是要受框架限制。