diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/border_spring.gif b/zh-cn/application-dev/reference/arkui-ts/figures/border_spring.gif
new file mode 100644
index 0000000000000000000000000000000000000000..91ac864a628eeee65b3415cc5910081e8db10a38
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/border_spring.gif differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/drag_between_grid.gif b/zh-cn/application-dev/reference/arkui-ts/figures/drag_between_grid.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b96c769c2d50d6123a8e75da9e38b3c21a6f8f73
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/drag_between_grid.gif differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/drag_in_grid.gif b/zh-cn/application-dev/reference/arkui-ts/figures/drag_in_grid.gif
new file mode 100644
index 0000000000000000000000000000000000000000..57d13aa8ac2929afcf05e9639c8035b88839a553
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/drag_in_grid.gif differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/drag_in_out_grid.gif b/zh-cn/application-dev/reference/arkui-ts/figures/drag_in_out_grid.gif
new file mode 100644
index 0000000000000000000000000000000000000000..1f1b1cc5d085d7b04e30634ee18795c07e5ae4d8
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/drag_in_out_grid.gif differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/grid-17.gif b/zh-cn/application-dev/reference/arkui-ts/figures/grid-17.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9ead4d671531532629b2fbf2f411ce4008dde3ba
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/grid-17.gif differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/grid_edit_drag.gif b/zh-cn/application-dev/reference/arkui-ts/figures/grid_edit_drag.gif
new file mode 100644
index 0000000000000000000000000000000000000000..c76390cf988e6e7bbd154c1b2f116d3f2654d791
Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/grid_edit_drag.gif differ
diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-grid.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-grid.md
index 35d9a4fb0082b17e6ea924bace9353641db02297..ad0aa0dbe767f7175e5b37da0ad3ba3b200a914e 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-container-grid.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-grid.md
@@ -1,149 +1,438 @@
-# Grid
-
-> **说明:**
->该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
-
-网格容器,二维布局,将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以任意组合不同的网格,做出各种各样的布局。
-
-## 权限列表
-
-无
-
-## 子组件
-
-包含[GridItem](ts-container-griditem.md)子组件。
-
-## 接口说明
-
-Grid\(\)
-
-## 属性
-
-
名称
- |
-参数类型
- |
-默认值
- |
-描述
- |
-
-
-columnsTemplate
- |
-string
- |
-'1fr'
- |
-用于设置当前网格布局列的数量,不设置时默认1列 示例, '1fr 1fr 2fr' 分三列,将父组件允许的宽分为4等份,第一列占1份,第二列占一份,第三列占2份。
- |
-
-rowsTemplate
- |
-string
- |
-'1fr'
- |
-用于设置当前网格布局行的数量,不设置时默认1行 示例, '1fr 1fr 2fr'分三行,将父组件允许的高分为4等份,第一行占1份,第二行占一份,第三行占2份。
- |
-
-columnsGap
- |
-Length
- |
-0
- |
-用于设置列与列的间距。
- |
-
-rowsGap
- |
-Length
- |
-0
- |
-用于设置行与行的间距。
- |
-
-
-
-
-## 事件
-
-名称
- |
-功能描述
- |
-
-
-onScrollIndex(first: number) => void
- |
-当前列表显示的起始位置item发生变化时触发。
- |
-
-
-
-
-## 示例
-
-```
-@Entry
-@Component
-struct GridExample {
- @State Number: String[] = ['0', '1', '2', '3', '4']
-
- build() {
- Column({ space: 5 }) {
- Grid() {
- ForEach(this.Number, (day: string) => {
- ForEach(this.Number, (day: string) => {
- GridItem() {
- Text(day)
- .fontSize(16)
- .backgroundColor(0xF9CF93)
- .width('100%')
- .height('100%')
- .textAlign(TextAlign.Center)
- }
- }, day => day)
- }, day => day)
- }
- .columnsTemplate('1fr 1fr 1fr 1fr 1fr')
- .rowsTemplate('1fr 1fr 1fr 1fr 1fr')
- .columnsGap(10)
- .rowsGap(10)
- .width('90%')
- .backgroundColor(0xFAEEE0)
- .height(300)
-
- Text('scroll').fontColor(0xCCCCCC).fontSize(9).width('90%')
- Grid() {
- ForEach(this.Number, (day: string) => {
- ForEach(this.Number, (day: string) => {
- GridItem() {
- Text(day)
- .fontSize(16)
- .backgroundColor(0xF9CF93)
- .width('100%')
- .height(80)
- .textAlign(TextAlign.Center)
- }
- }, day => day)
- }, day => day)
- }
- .columnsTemplate('1fr 1fr 1fr 1fr 1fr')
- .columnsGap(10)
- .rowsGap(10)
- .onScrollIndex((first: number) => {
- console.info(first.toString())
- })
- .width('90%')
- .backgroundColor(0xFAEEE0)
- .height(300)
- }.width('100%').margin({ top: 5 })
- }
-}
-```
-
-
-
+# Grid
+
+网格容器,二维布局,将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格,可以任意组合不同的网格,做出各种各样的布局。
+
+## 权限类别
+
+无
+
+## 子组件
+
+包含[GridItem](ts-container-griditem.md)子组件。
+
+## 接口
+
+Grid\(\)
+
+## 属性
+
+不支持*`backgroundColor`*以外的通用属性设置。
+
+| 名称 | 参数类型 | 默认值 | 描述 |
+| ------------------------------------------------------- | --------------- | -------------------- | ------------------------------------------------------------ |
+| columnsTemplate | string | '1fr' | 用于设置当前网格布局列的数量,不设置时默认1列 示例, '1fr 1fr 2fr' 分三列,将父组件允许的宽分为4等份,第一列占1份,第二列占一份,第三列占2份。 |
+| rowsTemplate | string | '1fr' | 用于设置当前网格布局行的数量,不设置时默认1行 示例, '1fr 1fr 2fr'分三行,将父组件允许的高分为4等份,第一行占1份,第二行占一份,第三行占2份。 |
+| columnsGap | Length | 0 | 用于设置列与列的间距。 |
+| rowsGap | Length | 0 | 用于设置行与行的间距。 |
+| editMode8+ | boolean | false | 进入编辑模式,支持Gird组件内部拖拽。 |
+| layoutDirection8+ | LayoutDirection | LayoutDirection::Row | LayoutDirection::Row:Grid水平方向布局
LayoutDirection::Column:Grid垂直方向布局
LayoutDirection::RowReverse:Grid水平方向布局
LayoutDirection::ColumnReverse:Grid水平方向布局 |
+| maxCount8+ | number | 1 | 当Grid为垂直方向布局,表示可显示的最大行数;当Grid为水平方向布局,表示可显示的最大列数。 |
+| minCount8+ | number | 1 | 当Grid为垂直方向布局,表示可显示的最小行数;当Grid为水平方向布局,表示可显示的最小列数。 |
+| cellLength8+ | number | 0 | 当Grid为垂直方向布局,表示每行的固定高度;当Grid为水平方向布局,表示每列的固定宽度。 |
+| supportAnimation8+ | boolean | true | Grid是否支持引力动画:true表示支持引力动画,false不支持引力动画。 |
+
+## 事件
+
+| 名称 | 功能描述 |
+| ------------------------------------------------------------ | ------------------------------------------------------------ |
+| onScrollIndex(first: number) => void | 当前列表显示的起始位置item发生变化时触发。 |
+| onItemDragStart8+(event: ItemDragInfo, itemIndex: number) => ((() => any) \| void) | 绑定后,第一次拖拽item时,触发回调。(当监听了onDrop事件时,此事件才有效)
itemindex: 当前被拖拽的item原本的索引。 |
+| onItemDragEnter8+(event: ItemDragInfo) => void | 绑定后,拖拽进入组件范围内时,触发回调。(当监听了onDrop事件时,此事件才有效) |
+| onItemDragMove8+(event: ItemDragInfo, itemIndex: number, insertIndex: number) => void | 绑定后,拖拽在可放置组件范围内移动时,触发回调。(当监听了onDrop事件时,此事件才有效)
insertIndex: 当前拖入宫格进行插入后item的索引。
itemindex: 当前被拖拽的item原本的索引。 |
+| onItemDragLeave8+(event: ItemDragInfo, itemIndex: number) => void | 绑定后,拖拽离开组件范围内时,触发回调。(当监听了onDrop事件时,此事件才有效)
itemindex: 当前被拖拽的item原本的索引。 |
+| onItemDrop8+(event: ItemDragInfo, itemIndex: number, insertIndex: number, isSuccess: boolean) => void | 绑定此事件的组件可作为拖拽释放目标,当在本组件范围内停止拖拽行为时,触发此回调。
insertIndex: 当前拖入宫格进行插入后item的索引。
itemindex: 当前被拖拽的item原本的索引。
isSuccess: drop时插入是否成功。
(场景1:isSuccess = true, itemindex > 0, insertIndex > 0。调整内部item位置;
场景2:isSuccess = true, itemindex = -1, insertIndex > 0。插入新的item;
场景3:isSuccess = true, itemindex > 0, insertIndex = -1。删除内部item;
场景4:isSuccess = false。事件不做任何处理) |
+
+## 示例
+
+```typescript
+@Entry
+@Component
+struct GridExample {
+ @State Number: String[] = ['0', '1', '2', '3', '4']
+
+ build() {
+ Column({ space: 5 }) {
+ Grid() {
+ ForEach(this.Number, (day: string) => {
+ ForEach(this.Number, (day: string) => {
+ GridItem() {
+ Text(day)
+ .fontSize(16)
+ .backgroundColor(0xF9CF93)
+ .width('100%')
+ .height('100%')
+ .textAlign(TextAlign.Center)
+ }
+ }, day => day)
+ }, day => day)
+ }
+ .columnsTemplate('1fr 1fr 1fr 1fr 1fr')
+ .rowsTemplate('1fr 1fr 1fr 1fr 1fr')
+ .columnsGap(10)
+ .rowsGap(10)
+ .width('90%')
+ .backgroundColor(0xFAEEE0)
+ .height(300)
+
+ Text('scroll').fontColor(0xCCCCCC).fontSize(9).width('90%')
+ Grid() {
+ ForEach(this.Number, (day: string) => {
+ ForEach(this.Number, (day: string) => {
+ GridItem() {
+ Text(day)
+ .fontSize(16)
+ .backgroundColor(0xF9CF93)
+ .width('100%')
+ .height(80)
+ .textAlign(TextAlign.Center)
+ }
+ }, day => day)
+ }, day => day)
+ }
+ .columnsTemplate('1fr 1fr 1fr 1fr 1fr')
+ .columnsGap(10)
+ .rowsGap(10)
+ .onScrollIndex((first: number) => {
+ console.info(first.toString())
+ })
+ .width('90%')
+ .backgroundColor(0xFAEEE0)
+ .height(300)
+ }.width('100%').margin({ top: 5 })
+ }
+}
+```
+
+
+
+```javascript
+@Entry
+@Component
+struct Hello {
+ @State Number2: String[] = ['a', 'b', 'c']
+ @State Number1: String[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11']
+ private NumberTmp: String[] = []
+ private DragNumberCash: String[] = []
+ private DragItemIndex : number
+ @State ConflictTest : string = 'ConflictTest'
+ @Builder SquareText() {
+ Flex({ justifyContent: FlexAlign.Center, direction: FlexDirection.Column, alignItems: ItemAlign.Center }){
+ Text("label1")
+ .fontSize(20)
+ .backgroundColor(Color.Yellow)
+ }.width(100)
+ .height(100)
+ }
+ @Builder SquareText2() {
+ Flex({ justifyContent: FlexAlign.Center, direction: FlexDirection.Column, alignItems: ItemAlign.Center }){
+ Text("label2")
+ .fontSize(20)
+ .backgroundColor(Color.Yellow)
+ }.width(100)
+ .height(100)
+ }
+ build() {
+ Column({ space: 10 }) {
+ Button() {}
+ Grid() {
+ ForEach(this.Number2, (day: string) => {
+ GridItem() {
+ Text(day)
+ .fontSize(30)
+ .backgroundColor(0xF9CF93)
+ .width('100%')
+ .height('100%')
+ .textAlign(TextAlign.Center)
+ }
+ }, day => day)
+ }
+ .rowsTemplate('1fr 1fr 1fr')
+ .columnsGap(10)
+ .rowsGap(10)
+ .minCount(1)
+ .maxCount(3)
+ .cellLength(100)
+ .backgroundColor(0xFAEEE0)
+ .height(240)
+ .editMode(true)
+ .onItemDragEnter((event)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDragEnter called: x:"+event.x + " y:"+event.y);
+ })
+
+ .onItemDragMove((event, itemIndex, insertIndex)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDragMove called: itemIndex=" + itemIndex +
+ ",insertIndex=" + insertIndex + " x:"+event.x + " y:"+event.y);
+ })
+
+ .onItemDragLeave((event, itemIndex)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDragLeave called: itemIndex=" + itemIndex + " x:"+event.x + " y:"+event.y);
+ })
+
+ .onItemDragStart((event, itemIndex)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDragStart called: itemIndex=" + itemIndex + " x:"+event.x + " y:"+event.y);
+ this.DragNumberCash = this.Number2;
+ this.DragItemIndex = itemIndex;
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDragStart called: DragNumberCash=" + this.DragNumberCash + " DragNumber: " + this.DragNumberCash[itemIndex]);
+ return this.SquareText2;
+ })
+
+ .onItemDrop((event, itemIndex, insertIndex, isSuccess)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop called: itemIndex=" + itemIndex +
+ ",insertIndex=" + insertIndex + ", isSuccess=" + isSuccess + " x:"+event.x + " y:"+event.y);
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop old array:" + this.Number2);
+ if (isSuccess) {
+ if (itemIndex >= 0 && insertIndex >= 0 ){ //调整内部item位置
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop move");
+ this.NumberTmp = this.Number2;
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop DragNumber=" + this.DragNumberCash[itemIndex]);
+ if (itemIndex > insertIndex) {
+ this.NumberTmp.splice(insertIndex,0,this.DragNumberCash[itemIndex]);
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop after1 insert array:" + this.Number2);
+ this.NumberTmp.splice(itemIndex + 1,1);
+ } else {
+ this.NumberTmp.splice(insertIndex + 1,0,this.DragNumberCash[itemIndex]);
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop after2 insert array:" + this.Number2);
+ this.NumberTmp.splice(itemIndex,1);
+ }
+ this.Number2 = this.NumberTmp;
+ } else if (itemIndex == -1 && insertIndex >= 0) { //插入新的item
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop insert");
+ this.Number2.splice(insertIndex,0,this.DragNumberCash[this.DragItemIndex]);
+ } else if (itemIndex >= 0 && insertIndex == -1) { //删除内部item
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop delete");
+ this.Number2.splice(itemIndex,1);
+ }
+ }
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop new array:" + this.Number2);
+ })
+
+
+ Grid() {
+ ForEach(this.Number1, (day: string) => {
+ GridItem() {
+ Text(day)
+ .fontSize(30)
+ .backgroundColor(0xF9CF93)
+ .width('100%')
+ .height('100%')
+ .textAlign(TextAlign.Center)
+ }
+ }, day => day)
+ }
+ .columnsTemplate('1fr 1fr 1fr 1fr')
+ .rowsTemplate('1fr 1fr 1fr')
+ .columnsGap(10)
+ .rowsGap(10)
+ .width('90%')
+ .backgroundColor(0xFAEEE0)
+ .height(260)
+ .editMode(true)
+ .layoutDirection(LayoutDirection.Column)
+ .onItemDragEnter((event)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDragEnter called:" + " x:"+event.x + " y:"+event.y);
+ })
+
+ .onItemDragMove((event, itemIndex, insertIndex)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDragMove called: itemIndex=" + itemIndex +
+ ",insertIndex=" + insertIndex + " x:"+event.x + " y:"+event.y);
+ })
+
+ .onItemDragLeave((event, itemIndex)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDragLeave called: itemIndex=" + itemIndex + " x:"+event.x + " y:"+event.y);
+ })
+
+ .onItemDragStart((event, itemIndex)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDragStart called: itemIndex=" + itemIndex + " x:"+event.x + " y:"+event.y);
+ this.DragNumberCash = this.Number1;
+ this.DragItemIndex = itemIndex;
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDragStart called: DragNumberCash=" + this.DragNumberCash + " DragNumber: " + this.DragNumberCash[itemIndex]);
+ return this.SquareText;
+ })
+
+ .onItemDrop((event, itemIndex, insertIndex, isSuccess)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDrop called: itemIndex=" + itemIndex +
+ ",insertIndex=" + insertIndex + ", isSuccess=" + isSuccess + " x:"+event.x + " y:"+event.y);
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDrop old array:" + this.Number1);
+ if (isSuccess) {
+ if (itemIndex >= 0 && insertIndex >= 0 ){ //调整内部item位置
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDrop move");
+ this.NumberTmp = this.Number1;
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDrop DragNumber=" + this.DragNumberCash[itemIndex]);
+ if (itemIndex > insertIndex) {
+ this.NumberTmp.splice(insertIndex,0,this.DragNumberCash[itemIndex]);
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDrop after1 insert array:" + this.Number1);
+ this.NumberTmp.splice(itemIndex + 1,1);
+ } else {
+ this.NumberTmp.splice(insertIndex + 1,0,this.DragNumberCash[itemIndex]);
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDrop after2 insert array:" + this.Number1);
+ this.NumberTmp.splice(itemIndex,1);
+ }
+ this.Number1 = this.NumberTmp;
+ } else if (itemIndex == -1 && insertIndex >= 0) { //插入新的item
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDrop insert");
+ this.Number1.splice(insertIndex,0,this.DragNumberCash[this.DragItemIndex]);
+ } else if (itemIndex >= 0 && insertIndex == -1) { //删除内部item
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDrop delete");
+ this.Number1.splice(itemIndex,1);
+ }
+ }
+ console.log(">>>>>>>> RenderGridLayout grid 1: onGridDrop new array:" + this.Number1);
+ })
+
+ }.width('100%').margin({ top: 0 })
+ }
+}
+
+```
+
+
+
+
+
+```javascript
+@Entry
+@Component
+struct Hello {
+ @Builder NumberBuilder() {
+ Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center}){
+ Text('drag1').fontSize(20)
+ }.width(80).height(80).backgroundColor(Color.Red)
+ }
+
+ @Builder LetterBuilder() {
+ Flex({ direction: FlexDirection.Column, justifyContent: FlexAlign.Center, alignItems: ItemAlign.Center}){
+ Text('drag2').fontSize(20)
+ }.width(80).height(80).backgroundColor(Color.Blue)
+ }
+
+ @State Number1: String[] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
+ @State Number2: String[] = ['一', '二', '三']
+ private NumberTmp: String[] = ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0']
+ private DragNumberCash: String[] = ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0']
+ private DragItemIndex : number
+ build() {
+ Column({ space: 100 }) {
+ Button() {
+ }
+ Grid() {
+ ForEach(this.Number1, (day: string) => {
+ GridItem() {
+ Text(day)
+ .fontSize(30)
+ .backgroundColor(0xF9CF93)
+ .width('100%')
+ .height('100%')
+ .textAlign(TextAlign.Center)
+ }
+ }, day => day)
+ }
+ .columnsTemplate('1fr 1fr 1fr 1fr')
+ .rowsTemplate('1fr 1fr 1fr 1fr')
+ .columnsGap(10)
+ .rowsGap(10)
+ .width('90%')
+ .backgroundColor(0xFAEEE0)
+ .height(260)
+ .editMode(true)
+ .supportAnimation(true)
+ .onItemDragEnter((event)=>{
+ })
+
+ .onItemDragMove((event, itemIndex, insertIndex)=>{
+ })
+
+ .onItemDragLeave((event, itemIndex)=>{
+ })
+
+ .onItemDragStart((event, itemIndex)=>{
+ this.DragNumberCash = this.Number1;
+ this.DragItemIndex = itemIndex;
+ return this.NumberBuilder;
+ })
+
+ .onItemDrop((event, itemIndex, insertIndex, isSuccess)=>{
+ if (isSuccess) {
+ if (itemIndex >= 0 && insertIndex >= 0 ){
+ this.NumberTmp = this.Number1;
+ if (itemIndex > insertIndex) {
+ this.NumberTmp.splice(insertIndex,0,this.DragNumberCash[itemIndex]);
+ this.NumberTmp.splice(itemIndex + 1,1);
+ } else {
+ this.NumberTmp.splice(insertIndex + 1,0,this.DragNumberCash[itemIndex]);
+ this.NumberTmp.splice(itemIndex,1);
+ }
+ this.Number1 = this.NumberTmp;
+ } else if (itemIndex == -1 && insertIndex >= 0) {
+ this.Number1.splice(insertIndex,0,this.DragNumberCash[this.DragItemIndex]);
+ } else if (itemIndex >= 0 && insertIndex == -1) {
+ this.Number1.splice(itemIndex,1);
+ }
+ }
+ })
+
+ Grid() {
+ ForEach(this.Number2, (day: string) => {
+ GridItem() {
+ Text(day)
+ .fontSize(30)
+ .backgroundColor(0xF9CF93)
+ .width('100%')
+ .height('100%')
+ .textAlign(TextAlign.Center)
+ }
+ }, day => day)
+ }
+ .columnsTemplate('1fr 1fr 1fr')
+ .rowsTemplate('1fr 1fr')
+ .columnsGap(60)
+ .rowsGap(60)
+ .width('90%')
+ .backgroundColor(0xFAEEE0)
+ .height(260)
+ .editMode(true)
+ .onItemDragEnter((event)=>{
+ })
+
+ .onItemDragMove((event, itemIndex, insertIndex)=>{
+ })
+
+ .onItemDragLeave((event, itemIndex)=>{
+ })
+
+ .onItemDragStart((event, itemIndex)=>{
+ this.DragNumberCash = this.Number2;
+ this.DragItemIndex = itemIndex;
+ return this.LetterBuilder;
+ })
+
+ .onItemDrop((event, itemIndex, insertIndex, isSuccess)=>{
+ console.log(">>>>>>>> RenderGridLayout grid 2: onGridDrop old array:" + this.Number2);
+ if (isSuccess) {
+ if (itemIndex >= 0 && insertIndex >= 0 ){
+ this.NumberTmp = this.Number2;
+ if (itemIndex > insertIndex) {
+ this.NumberTmp.splice(insertIndex,0,this.DragNumberCash[itemIndex]);
+ this.NumberTmp.splice(itemIndex + 1,1);
+ } else {
+ this.NumberTmp.splice(insertIndex + 1,0,this.DragNumberCash[itemIndex]);
+ this.NumberTmp.splice(itemIndex,1);
+ }
+ this.Number2 = this.NumberTmp;
+ } else if (itemIndex == -1 && insertIndex >= 0) {
+ this.Number2.splice(insertIndex,0,this.DragNumberCash[this.DragItemIndex]);
+ } else if (itemIndex >= 0 && insertIndex == -1) {
+ this.Number2.splice(itemIndex,1);
+ }
+ }
+ })
+
+ }.width('100%').margin({ top: 0 })
+ }
+}
+```
+
+
+
+
+
+
\ No newline at end of file