diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-universal-events-drag-drop.md b/zh-cn/application-dev/reference/arkui-ts/ts-universal-events-drag-drop.md
index af4d9e3ed3a62ce06e4a4082cd6e2c8168cd8697..3d7600ee9adc1d0f7e76d4cd8cc85e1d137dac7e 100644
--- a/zh-cn/application-dev/reference/arkui-ts/ts-universal-events-drag-drop.md
+++ b/zh-cn/application-dev/reference/arkui-ts/ts-universal-events-drag-drop.md
@@ -1,6 +1,6 @@
# 拖拽事件
-拖拽事件指被长按后拖拽时触发的事件。
+拖拽事件指组件被长按后拖拽时触发的事件。
> **说明:**
>
@@ -10,18 +10,18 @@
| 名称 | 支持冒泡 | 功能描述 |
| ---------------------------------------- | ---- | ---------------------------------------- |
-| onDragStart(event: (event?: DragEvent, extraParams?: string) => [CustomBuilder](ts-types.md#custombuilder8) \| DragItemInfo) | 否 | 第一次拖拽此事件绑定的组件时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParam类型描述。
返回值:当前跟手效果所拖拽的对象,用于显示拖拽时的提示组件。
长按150毫秒(ms)可触发拖拽事件。优先级:长按手势配置时间小于等于150毫秒(ms)时,长按手势优先触发,否则拖拽事件优先触发。 |
-| onDragEnter(event: (event?: DragEvent, extraParams?: string) => void) | 否 | 拖拽进入组件范围内时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParam类型描述。
当监听了onDrop事件时,此事件才有效。 |
-| onDragMove(event: (event?: DragEvent, extraParams?: string) => void) | 否 | 拖拽在组件范围内移动时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParam类型描述。
当监听了onDrop事件时,此事件才有效。 |
-| onDragLeave(event: (event?: DragEvent, extraParams?: string) => void) | 否 | 拖拽离开组件范围内时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParam类型描述。
当监听了onDrop事件时,此事件才有效。 |
-| onDrop(event: (event?: DragEvent, extraParams?: string) => void) | 否 | 绑定此事件的组件可作为拖拽释放目标,当在本组件范围内停止拖拽行为时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParam类型描述。 |
+| onDragStart(event: (event?: [DragEvent](#DragEvent对象说明), extraParams?: string) => [CustomBuilder](ts-types.md#custombuilder8) \| [DragItemInfo](#DragItemInfo说明) | 否 | 第一次拖拽此事件绑定的组件时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParams说明。
返回值:当前跟手效果所拖拽的对象,用于显示拖拽时的提示组件。
长按150毫秒(ms)可触发拖拽事件。优先级:长按手势配置时间小于等于150毫秒(ms)时,长按手势优先触发,否则拖拽事件优先触发。 |
+| onDragEnter(event: (event?: [DragEvent](#DragEvent对象说明), extraParams?: string) => void) | 否 | 拖拽进入组件范围内时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParams说明。
当监听了onDrop事件时,此事件才有效。 |
+| onDragMove(event: (event?: [DragEvent](#DragEvent对象说明), extraParams?: string) => void) | 否 | 拖拽在组件范围内移动时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParams说明。
当监听了onDrop事件时,此事件才有效。 |
+| onDragLeave(event: (event?: [DragEvent](#DragEvent对象说明), extraParams?: string) => void) | 否 | 拖拽离开组件范围内时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParams说明。
当监听了onDrop事件时,此事件才有效。 |
+| onDrop(event: (event?: [DragEvent](#DragEvent对象说明), extraParams?: string) => void) | 否 | 绑定此事件的组件可作为拖拽释放目标,当在本组件范围内停止拖拽行为时,触发回调。
- event:拖拽事件信息,包括拖拽点坐标。
- extraParams:拖拽事件额外信息,详见extraParams说明。 |
## DragItemInfo说明
-| 属性名称 | 属性类型 | 必填 | 描述 |
+| 名称 | 类型 | 必填 | 描述 |
| --------- | ---------------------------------------- | ---- | --------------------------------- |
| pixelMap | [PixelMap](../apis/js-apis-image.md#pixelmap7) | 否 | 设置拖拽过程中显示的图片。 |
-| builder | [CustomBuilder](ts-types.md#custombuilder8) | 否 | 使用自定义生成器进行绘图,如果设置了pixelMap,则忽略此值。 |
+| builder | [CustomBuilder](ts-types.md#custombuilder8) | 否 | 拖拽过程中显示自定义组件,如果设置了pixelMap,则忽略此值。 |
| extraInfo | string | 否 | 拖拽项的描述。 |
@@ -31,9 +31,9 @@
extraParam是Json对象转换的string字符串,可以通过Json.parse转换的Json对象获取如下属性。
-| 属性名称 | 属性类型 | 描述 |
+| 名称 | 类型 | 描述 |
| ------------- | ------ | ---------------------------------------- |
-| selectedIndex | number | 当拖拽事件设在父容器的子元素时,selectedIndex表示当前被拖拽子元素是父容器第selectedIndex个子元素,selectedIndex从0开始。
仅在ListItem组件中生效。 |
+| selectedIndex | number | 当拖拽事件设在父容器的子元素时,selectedIndex表示当前被拖拽子元素是父容器第selectedIndex个子元素,selectedIndex从0开始。
仅在ListItem组件的拖拽事件中生效。 |
| insertIndex | number | 当前拖拽元素在List组件中放下时,insertIndex表示被拖拽元素插入该组件的第insertIndex个位置,insertIndex从0开始。
仅在List组件的拖拽事件中生效。 |
## DragEvent对象说明
@@ -50,81 +50,101 @@
@Entry
@Component
struct DragExample {
- @State numbers: string[] = ['one', 'two', 'three', 'four', 'five', 'six']
- @State text: string = ''
- @State bool: boolean = false
- @State bool1: boolean = false
- @State appleVisible: Visibility = Visibility.Visible
- @State orangeVisible: Visibility = Visibility.Visible
- @State bananaVisible: Visibility = Visibility.Visible
- @State select: number = 0
-
+ @State numbers: string[] = ['one', 'two', 'three', 'four', 'five', 'six'];
+ @State text: string = '';
+ @State bool: boolean = false;
+ @State appleVisible: Visibility = Visibility.Visible;
+ @State orangeVisible: Visibility = Visibility.Visible;
+ @State bananaVisible: Visibility = Visibility.Visible;
+
+ // 自定义拖拽过程中显示的内容
@Builder pixelMapBuilder() {
Column() {
Text(this.text)
- .width('50%').height(60).fontSize(16).borderRadius(10)
- .textAlign(TextAlign.Center).backgroundColor(Color.Yellow)
+ .width('50%')
+ .height(60)
+ .fontSize(16)
+ .borderRadius(10)
+ .textAlign(TextAlign.Center)
+ .backgroundColor(Color.Yellow)
}
}
build() {
Column() {
Text('There are three Text elements here')
- .fontSize(12).fontColor(0xCCCCCC).width('90%')
- .textAlign(TextAlign.Start).margin(5)
- Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceAround }) {
- Text('apple').width('25%').height(35).fontSize(16)
- .textAlign(TextAlign.Center).backgroundColor(0xAFEEEE)
+ .fontSize(12)
+ .fontColor(0xCCCCCC)
+ .width('90%')
+ .textAlign(TextAlign.Start)
+ .margin(5)
+ Row({ space: 15 }) {
+ Text('apple')
+ .width('25%')
+ .height(35)
+ .fontSize(16)
+ .textAlign(TextAlign.Center)
+ .backgroundColor(0xAFEEEE)
.visibility(this.appleVisible)
.onDragStart(() => {
this.bool = true
this.text = 'apple'
- this.appleVisible = Visibility.Hidden
+ this.appleVisible = Visibility.None
return this.pixelMapBuilder
})
- Text('orange').width('25%').height(35).fontSize(16)
- .textAlign(TextAlign.Center).backgroundColor(0xAFEEEE)
+ Text('orange')
+ .width('25%')
+ .height(35)
+ .fontSize(16)
+ .textAlign(TextAlign.Center)
+ .backgroundColor(0xAFEEEE)
.visibility(this.orangeVisible)
.onDragStart(() => {
this.bool = true
this.text = 'orange'
- this.orangeVisible = Visibility.Hidden
+ this.orangeVisible = Visibility.None
return this.pixelMapBuilder
})
- Text('banana').width('25%').height(35).fontSize(16)
- .textAlign(TextAlign.Center).backgroundColor(0xAFEEEE)
+ Text('banana')
+ .width('25%')
+ .height(35)
+ .fontSize(16)
+ .textAlign(TextAlign.Center)
+ .backgroundColor(0xAFEEEE)
.visibility(this.bananaVisible)
.onDragStart((event: DragEvent, extraParams: string) => {
console.log('Text onDragStarts, ' + extraParams)
this.bool = true
this.text = 'banana'
- this.bananaVisible = Visibility.Hidden
+ this.bananaVisible = Visibility.None
return this.pixelMapBuilder
})
- }.border({ width: 1 }).width('90%').padding({ top: 10, bottom: 10 }).margin(10)
-
- Text('This is a List element').fontSize(12)
- .fontColor(0xCCCCCC).width('90%')
- .textAlign(TextAlign.Start).margin(15)
- List({ space: 20, initialIndex: 0 }) {
+ }.padding({ top: 10, bottom: 10 }).margin(10)
+
+ Text('This is a List element')
+ .fontSize(12)
+ .fontColor(0xCCCCCC)
+ .width('90%')
+ .textAlign(TextAlign.Start)
+ .margin(15)
+ List({ space: 20 }) {
ForEach(this.numbers, (item) => {
ListItem() {
- Text('' + item)
- .width('100%').height(80).fontSize(16).borderRadius(10)
- .textAlign(TextAlign.Center).backgroundColor(0xAFEEEE)
+ Text(item)
+ .width('100%')
+ .height(80)
+ .fontSize(16)
+ .borderRadius(10)
+ .textAlign(TextAlign.Center)
+ .backgroundColor(0xAFEEEE)
}
- .onDragStart((event: DragEvent, extraParams: string) => {
- console.log('ListItem onDragStarts, ' + extraParams)
- var jsonString = JSON.parse(extraParams)
- this.bool1 = true
- this.text = this.numbers[jsonString.selectedIndex]
- this.select = jsonString.selectedIndex
- return this.pixelMapBuilder
- })
}, item => item)
}
.editMode(true)
- .height('50%').width('90%').border({ width: 1 })
+ .height('50%')
+ .width('90%')
+ .border({ width: 1 })
+ .padding(15)
.divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 })
.onDragEnter((event: DragEvent, extraParams: string) => {
console.log('List onDragEnter, ' + extraParams)
@@ -138,13 +158,9 @@ struct DragExample {
.onDrop((event: DragEvent, extraParams: string) => {
var jsonString = JSON.parse(extraParams)
if (this.bool) {
- this.numbers.splice(jsonString.insertIndex, 0, this.text)
- this.bool = false
- } else if (this.bool1) {
- this.numbers.splice(jsonString.selectedIndex, 1)
- this.numbers.splice(jsonString.insertIndex, 0, this.text)
- this.bool = false
- this.bool1 = false
+ // 通过splice方法插入元素
+ this.numbers.splice(jsonString.insertIndex, 0, this.text);
+ this.bool = false;
}
})
}.width('100%').height('100%').padding({ top: 20 }).margin({ top: 20 })