第十七章 掌握網格(二)

2021-09-20 00:05:33 字數 2866 閱讀 6182

**中的網格

也可以完全用**定義網格,但通常沒有xaml定義的清晰度或有序性。 gridcodedemo程式通過再現******griddemo的布局來演示**方法。

要指定rowdefinition的高度和columndefinition的寬度,可以使用gridlength結構的值,通常與gridunittype列舉結合使用。 gridcodedemopage類頂部的行定義演示了gridlength的變體。 不包括列定義,因為它們與預設生成的列定義相同:

public class gridcodedemopage : contentpage

, new rowdefinition ,

new rowdefinition ,

new rowdefinition }};

// first label (row 0 and column 0).

grid.children.add(new label

);// second label.

grid.children.add(new label

, 1, // left

0); // top

// image element.

grid.children.add(new image

,0, // left

2, // right

1, // top

2); // bottom

// three boxview elements.

boxview boxview1 = new boxview ;

grid.setrow(boxview1, 2);

grid.setcolumn(boxview1, 0);

grid.children.add(boxview1);

boxview boxview2 = new boxview ;

grid.setrow(boxview2, 2);

grid.setcolumn(boxview2, 1);

grid.setrowspan(boxview2, 2);

grid.children.add(boxview2);

boxview boxview3 = new boxview

;grid.setrow(boxview3, 3);

grid.setcolumn(boxview3, 0);

grid.setcolumnspan(boxview3, 2);

grid.children.add(boxview3);

padding = new thickness(0, device.onplatform(20, 0, 0), 0, 0);

content = grid;

}}

該程式顯示了幾種不同的方式將子項新增到網格並指定它們所在的單元格。 第乙個label位於第0行和第0列,因此只需將其新增到grid的children集合中以獲取預設的行和列設定:

grid.children.add(new label

);

grid重新定義其children集合為igridlist 型別,其中包含幾個額外的add方法。 其中一種add方法允許您指定行和列:

grid.children.add(new label

, 1, // left

0); // top

正如注釋所示,引數實際上被命名為left和top而不是column和row。 當您看到指定行和列跨度的語法時,這些名稱更有意義:

grid.children.add(new image

,0, // left

2, // right

1, // top

2); // bottom

這意味著子元素在左邊開始但在右邊之前結束 - 換句話說,第0列和第1列。它佔據從頂部開始但在底部之前結束的行,即第1行。右邊的引數必須 總是大於左,底部引數必須大於頂部。 如果沒有,grid會丟擲argumentoutofrangeexception。

igridlist 介面還定義了addhorizontal和addvertical方法,以將子項新增到單行或單列grid。 在進行這些呼叫時,grid會按列或行進行擴充套件,以及在子項上自動分配grid.column或grid.row設定。 您將在下一部分中看到此工具的用途。

在**中將子項新增到grid時,也可以顯式呼叫grid.setrow,grid.setcolumn,grid.setrowspan和grid.setcolumnspan。 在將子項新增到grid的children集合之前或之後是否進行這些呼叫並不重要:

boxview boxview1 = new boxview ;

grid.setrow(boxview1, 2);

grid.setcolumn(boxview1, 0);

grid.children.add(boxview1);

boxview boxview2 = new boxview ;

grid.setrow(boxview2, 2);

grid.setcolumn(boxview2, 1);

grid.setrowspan(boxview2, 2);

grid.children.add(boxview2);

boxview boxview3 = new boxview

;grid.setrow(boxview3, 3);

grid.setcolumn(boxview3, 0);

grid.setcolumnspan(boxview3, 2);

grid.children.add(boxview3);

第十七章 Size Classes

通常,您希望應用程式的介面根據螢幕的尺寸和方向而顯示不同的布局。在本章中,您將修改homepwner中的detailviewcontroller的介面,以便當它出現在具有相對較小高度的螢幕上時,文字字段集合和影象檢視併排而不是堆疊在一起 圖17.1 圖17.1 homepwner 的 detailv...

第十七章 部署

總的來說,部署遇到了許多坑,而且還有好多坑還沒有踩。去cocode找了許多教程,才踩了一些坑,但是關於資料庫的坑,先留著。所有的db.session.add 後面都加上db.session.commit 才行。記得,這是狗書的問題!部署教程 每次修改後需要一下命令重新部署下 git add git ...

第十七章 包

1 如果a資料夾所在目錄在環境變數,a資料夾中的 ma 模組可以被以下方式匯入 import a.ma form a import ma 2 如果 a 資料夾所在目錄在環境變數,a 資料夾中的 b 資料夾的 mb 模組可以被以下方式匯入 import a b mb from a.b import m...