Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
c7d9a986
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
c7d9a986
编写于
5月 09, 2023
作者:
S
sunxianlei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
'增加ListItem滑动显示快捷菜单案例'
Signed-off-by:
N
sunxianlei
<
sunxianlei@huawei.com
>
上级
aeff75a7
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
122 addition
and
0 deletion
+122
-0
zh-cn/third-party-cases/Readme-CN.md
zh-cn/third-party-cases/Readme-CN.md
+1
-0
zh-cn/third-party-cases/figures/listitem-slide-demo.gif
zh-cn/third-party-cases/figures/listitem-slide-demo.gif
+0
-0
zh-cn/third-party-cases/listitem-slide-to-display-menu.md
zh-cn/third-party-cases/listitem-slide-to-display-menu.md
+121
-0
未找到文件。
zh-cn/third-party-cases/Readme-CN.md
浏览文件 @
c7d9a986
...
...
@@ -11,6 +11,7 @@
-
[
如何实现列表项的新增和删除
](
how-to-add-delete-listitems.md
)
-
[
如何通过显示动画实现书籍翻页动效
](
book-flip-animation.md
)
-
[
如何为同一组件在不同场景下绑定不同的业务逻辑
](
different-operations-for-one-component.md
)
-
[
如何实现列表项ListItem滑动显示快捷菜单
](
listitem-slide-to-display-menu.md
)
...
...
zh-cn/third-party-cases/figures/listitem-slide-demo.gif
0 → 100644
浏览文件 @
c7d9a986
281.9 KB
zh-cn/third-party-cases/listitem-slide-to-display-menu.md
0 → 100644
浏览文件 @
c7d9a986
# 如何实现列表项ListItem滑动显示快捷菜单
## 场景说明
在使用列表List的应用中,可以滑动列表项ListItem显示快捷菜单,快速完成对列表项的操作。List垂直布局时滑动操作支持左滑和右滑。
## 效果呈现
本示例最终效果如下:
![
listitem-slide
](
figures/listitem-slide-demo.gif
)
## 环境要求
-
IDE:DevEco Studio 3.1 Beta2
-
SDK:Ohos_sdk_public 3.2.11.5 (API Version 9 Release)
## 实现原理
1.
自定义组件实现划出后的快捷菜单。
2.
利用ListItem组件的swipeAction属性,设置ListItem的划出组件为上述自定义组件。
## 开发步骤
1.
实现自定义组件。本示例使用Row、Image组件组装一个包含两个图标按钮的快捷菜单组件。在定义组件时,给定入参便于后续定位到被滑动的ListItem。本示例中,当滑动出菜单后,点击删除按钮可以删除当前ListItem。
```
ts
@
Builder
itemEnd
(
index
:
number
)
{
Row
()
{
Image
(
$r
(
"
app.media.ic_public_settings_filled
"
))
...
})
Image
(
$r
(
"
app.media.ic_public_delete_filled
"
))
...
.
onClick
(()
=>
{
this
.
itemIndexArr
.
splice
(
index
,
1
)
})
}.
padding
(
4
).
justifyContent
(
FlexAlign
.
SpaceEvenly
)
}
```
2.
使用ForEach循环渲染列表,并为ListItem设置swipeAction属性为上述自定义组件,设置属性时绑定入参。
swipeAction支持设置不同的滑动方向:
*
start:List垂直布局时,向右滑动ListItem时在左侧显示的组件。本示例中未配置。
*
end:List垂直布局时,向左滑动ListItem时在右侧显示的组件。
```
ts
ForEach
(
this
.
itemIndexArr
,(
item
,
index
)
=>
{
ListItem
(){
Text
(
''
+
item
)
...
}.
swipeAction
({
end
:
this
.
itemEnd
.
bind
(
this
,
index
),
edgeEffect
:
SwipeEdgeEffect
.
Spring
})
},
item
=>
item
)
```
## 完整代码
通过上述步骤可以完成整个示例的开发,完整代码如下:
```
ts
@
Entry
@
Component
struct
Index
{
@
State
itemIndexArr
:
number
[]
=
[
1
,
2
]
@
Builder
itemEnd
(
index
:
number
)
{
Row
()
{
Image
(
$r
(
"
app.media.ic_public_settings_filled
"
))
.
width
(
32
)
.
height
(
32
)
.
margin
(
4
)
.
onClick
(()
=>
{
console
.
info
(
'
Click Setting Icon
'
)
})
Image
(
$r
(
"
app.media.ic_public_delete_filled
"
))
.
width
(
32
)
.
height
(
32
)
.
margin
(
4
)
.
onClick
(()
=>
{
this
.
itemIndexArr
.
splice
(
index
,
1
)
})
}.
padding
(
4
).
justifyContent
(
FlexAlign
.
SpaceEvenly
)
}
build
()
{
Column
()
{
List
({
space
:
10
})
{
ForEach
(
this
.
itemIndexArr
,(
item
,
index
)
=>
{
ListItem
(){
Text
(
''
+
item
)
.
width
(
'
100%
'
)
.
height
(
100
)
.
fontSize
(
16
)
.
margin
({
top
:
10
})
.
borderRadius
(
16
)
.
textAlign
(
TextAlign
.
Center
)
.
backgroundColor
(
Color
.
White
)
}.
swipeAction
({
end
:
this
.
itemEnd
.
bind
(
this
,
index
),
edgeEffect
:
SwipeEdgeEffect
.
Spring
})
},
item
=>
item
)
}
Row
()
{
Image
(
$r
(
"
app.media.ic_public_add_norm
"
))
.
width
(
40
)
.
height
(
40
)
.
margin
(
4
)
.
onClick
(()
=>
{
this
.
itemIndexArr
.
push
(
this
.
itemIndexArr
.
length
+
1
)
})
}
}
.
padding
(
10
)
.
backgroundColor
(
0xDCDCDC
)
.
width
(
'
100%
'
)
.
height
(
'
100%
'
)
}
}
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录