当前位置: 首页 > news >正文

HarmonyOS6 ArkTS List 设置折行走焦

文章目录

    • 一、功能概述
    • 二、官方核心 API
      • focusWrapMode(mode: FocusWrapMode)
        • 枚举值(官方)
    • 三、完整可运行代码
    • 四、代码关键解析
      • 1. 开启多列宫格布局(必须)
      • 2. 开启折行走焦(核心)
      • 3. 子项必须可聚焦
      • 4. 列表内边距(优化体验)
      • 5. 子项居中对齐
    • 六、运行效果(折行走焦表现)
    • 总结

一、功能概述

折行走焦(Focus Wrap Mode)是 List 组件在宫格/多列布局(lanes)下的焦点控制能力。
开启后,用户按方向键焦点移动时,到达行末尾会自动换行到下一行开头,实现连续流畅的焦点导航,这就是
折行走焦

  • 核心属性:focusWrapMode
  • 作用:设置列表多列布局下的焦点换行环绕规则
  • 适用场景:多列列表、宫格布局、TV/盒子/车机等键盘/遥控器焦点操作
  • 支持版本:API 9+ / HarmonyOS 6 全兼容

二、官方核心 API

focusWrapMode(mode: FocusWrapMode)

设置列表在多列布局下的焦点换行环绕策略。

枚举值(官方)
枚举值含义
FocusWrapMode.AUTO系统自动判断(默认)
FocusWrapMode.WRAP_WITH_ARROW按方向键自动折行走焦(示例使用)
FocusWrapMode.NONE不换行,到边界即停止

你代码中使用的是官方推荐的折行走焦模式:

.focusWrapMode(FocusWrapMode.WRAP_WITH_ARROW)

三、完整可运行代码

@Entry @Component struct ListExample { @State arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] build() { Stack({ alignContent: Alignment.TopStart }) { Column() { List({ space: 40, initialIndex: 0 }) { ForEach(this.arr, (item: number, index?: number) => { ListItem() { Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center }) { Text('' + item) .width(150) .height(93) .fontSize(30) .textAlign(TextAlign.Center) .borderRadius(10) .backgroundColor(0xFFFFFF) .flexShrink(1) .focusable(true) .offset({ left: 5 }) } } }, (item: string, index?: number) => item) } .lanes(2) .contentStartOffset(20) .contentEndOffset(20) .width('100%') .scrollBar(BarState.Off) .friction(0.6) .focusWrapMode(FocusWrapMode.WRAP_WITH_ARROW) .alignListItem(ListItemAlign.Center) .offset({ left: 20 }) }.width('90%') }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 }) } }

运行效果如图:


四、代码关键解析

1. 开启多列宫格布局(必须)

.lanes(2)// 两列布局

折行走焦必须在多列列表下才能体现效果

2. 开启折行走焦(核心)

.focusWrapMode(FocusWrapMode.WRAP_WITH_ARROW)

作用:

  • 右移到行末尾 →自动换到下一行开头
  • 左移到行开头 →自动换到上一行末尾
  • 实现连续环绕式焦点移动

3. 子项必须可聚焦

.focusable(true)

ListItem 子项必须开启可聚焦,焦点才能移动。

4. 列表内边距(优化体验)

.contentStartOffset(20).contentEndOffset(20)

设置列表内容边距,让焦点移动更美观。

5. 子项居中对齐

.alignListItem(ListItemAlign.Center)

让两列宫格居中显示,布局更标准。


六、运行效果(折行走焦表现)

  • 列表为2列宫格布局
  • 焦点右移 → 行尾自动换行到下一行开头
  • 焦点左移 → 行首自动换到上一行末尾
  • 焦点可在整个宫格内连续环绕移动,不会卡住
  • 视觉居中、边距美观、交互流畅

总结

  1. focusWrapMode 只对多列 List(lanes)生效
  2. 必须设置 item 可聚焦(focusable: true)
  3. 遥控器/键盘操作时生效
  4. 用于 TV、车机、大屏设备最优
  5. WRAP_WITH_ARROW 是官方标准折行走焦模式

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力!

http://www.jsqmd.com/news/551226/

相关文章:

  • 2026年全国青少年信息素养大赛算法应用主题赛(C++赛项初赛模拟题)
  • nli-distilroberta-base企业落地:嵌入BI工具插件实现报表注释逻辑一致性检查
  • Java Stream 中间操作全解析:惰性求值、无状态与有状态操作详解
  • OpenTiny NEXT 系列直播学习心得|从 AI 前端到开源实践,吃透 MCP、GenUI 全技术栈(附可复制实战教程)
  • 突破语言壁垒:XUnity.AutoTranslator实现Unity游戏全语言无障碍体验
  • gerrit打回后 如何操作?
  • 2026年阿里云部署OpenClaw|iMessage接入+千问/Coding Plan API+避坑指南
  • OptiScaler:跨平台游戏性能优化的技术融合方案
  • 8086汇编指令避坑指南:从MOV到INT 21H,这些细节考试和实战都爱考
  • 生发哪个机构更有效?黑奥秘针对性破解脱发问题,精准养护更专业 - 美业信息观察
  • 小身材 大能量 | 腾视科技重磅推出AI NAS,重塑数据管理方式,开启智能高效新时代
  • 如何高效获取股票数据?MOOTDX量化工具全攻略
  • OpenClaw如何安装?2026年OpenClaw(Clawdbot)本地小白10分钟部署保姆级步骤
  • 济南蚂蚁搬家丨官方服务电话+全场景搬家服务项目详解、本地团队 - 宁夏壹山网络
  • 对比Claude与EVA-02:在文本重构任务上的效果深度评测
  • 告别手动查找!用BurpJSLinkFinder自动提取JS链接的5个高效技巧
  • 开源机械臂如何重塑机器人研究生态:OpenArm的三大创新突破
  • 5步完成开源字体配置:高效打造专业文字显示效果
  • Power Query M语言日期时间函数实战指南:从基础操作到高级应用
  • 全平台内容自动化:Awesome-Dify-Workflow工作流解决方案
  • AI驱动的测试需求分析全流程革新
  • 梦幻动漫魔法工坊作品集:看看AI能画出多可爱的二次元世界
  • 压力型白发哪家机构能治好?黑奥秘科学理疗方案,效果可量化验证 - 美业信息观察
  • 探索WeMod高级功能:开源工具解锁无限游戏体验
  • 抖音直播间弹幕数据抓取完整指南:如何快速搭建实时监控系统
  • 解码学术突围:PaperXie 四大核心功能,重构毕业论文降重与 AIGC 检测全链路
  • 2026年手机号码品牌认证服务商:实现打电话显示公司名 - 企业服务推荐
  • Python 和HTML5 “跳动的心”动画
  • 【Vivado实战技巧】多版本共存时如何一键切换默认启动环境
  • VC++老项目改造指南:用MFC配置API替代过时的GetPrivateProfileString(兼容Win10/11)