HarmonyOS 6.0开发实战:Select组件——界面上的“隐藏选项抽屉” 原创
头像 程序员Feri 2025-10-21 17:47:45    发布
21622 浏览 527 点赞 0 收藏


Hello!我是程序员Feri—— 13 年编程老炮,实战派技术人,拆解编程技巧、分享副业心得,记录程序员的进阶路,AI 时代一起稳稳向前。

在APP里做单选选择时,总不能让一堆按钮挤在界面上吧?今天要聊的Select组件,就像一个“会收缩的魔法抽屉”——平时只露一个选项,点一下就弹出所有选择,既省空间又清爽,专治“选项太多挤得慌”的难题!

一、Select组件:啥玩意儿?用来干啥?

Select组件的核心技能很简单:提供下拉单选功能。就像你点外卖时的“口味选择”——默认显示一个(比如“微辣”),点一下展开列表(微辣、中辣、特辣、不辣),选一个就自动收起,还不占地方~

它支持给选项加小图标,让选择更有辨识度,不过记住:每个选项里“value(选项内容)是必填项”,图标就是“可选装饰”,加不加看你的界面颜值需求~

基本用法长这样,像给抽屉里塞选项卡片:

Select([  { value: "选项1", icon: 图标路径 }, // 带图标的选项  { value: "选项2" } // 纯文字选项]).onSelect((索引, 内容) => {  // 选完后的操作}).属性名(属性值) // 给抽屉打扮打扮

二、Select组件的“三大核心魔法”:别搞混啦!

想玩转这个“魔法抽屉”,先把这三个核心点吃透,像掌握抽屉的“开关密码”一样简单~

1. value属性:抽屉的“门面话”

默认显示在抽屉外的文本,比如你打开外卖APP,默认显示“微辣”,这个“微辣”就是value的值。

作用:告诉用户“当前选的啥”,没选之前先亮个默认选项撑场面~

2. selected属性:抽屉里的“默认心头好”

指定打开抽屉时,哪个选项是预先选中的(用索引表示,从0开始算)。

比如选项列表是[北京、南京、武汉],selected(2)就默认选中“武汉”——相当于打开抽屉时,提前把“武汉”的卡片翻到最前面~

3. onSelect事件:选完后的“情报接收器”

这是最关键的“互动环节”!点选某个选项后,它会立马返回两个“情报”:

  • 第一个是索引(number类型):告诉我们选的是第几个选项(比如选“南京”是第1个,索引就是1);
  • 第二个是内容(string类型):直接返回选中的选项文字(比如“南京”)。 有了这两个情报,就能做后续操作啦~

三、实战演练:两个“趣味小案例”秒会用法

光说不练假把式,咱们用两个生活化的例子,手把手教你用Select组件,就像玩小游戏一样简单!

案例1:带图标的“城市旅行清单”

想做一个“选择旅行目的地”的下拉框,每个城市配个小图标,选完还能在控制台看到结果~

代码拆解:

// 城市选择下拉框:带图标更直观Select([  { value: "北京", icon: $r("sys.media.AI_phone") }, // 北京+手机图标  { value: "南京", icon: $r("sys.media.app_lock_picture") }, // 南京+锁定图标  { value: "武汉", icon: $r("sys.media.AI_form") }, // 武汉+表单图标  { value: "郑州", icon: $r("sys.media.AI_play") }, // 郑州+播放图标  { value: "上海", icon: $r("sys.media.AI_translation") }, // 上海+翻译图标  { value: "杭州", icon: $r("sys.media.Celia") } // 杭州+Celia图标]).width("80%") // 抽屉宽度占屏幕80%,不挤不窄.value("武汉") // 默认显示“武汉”(门面话).selected(2) // 默认选中索引2的“武汉”(心头好).onSelect((i: number, v: string) => {  // 选完后打印情报:索引和城市名  console.log(`选中了第${i}个城市:${v},准备出发!`);})

案例2:联动文本的“书籍推荐官”

做一个选书籍的下拉框,选完后自动在界面上显示“你喜欢的书籍:XXX”,像个智能推荐小助手~

代码拆解:

@Entry@Componentstruct Demo4 {  // 先准备好书籍清单:像整理好的书单数组  books: SelectOption[] = [    { value: "《三体》" },    { value: "《水浒传》" },    { value: "《围城》" }  ];  // 存储选中的书籍信息,默认空字符串  @State msg: string = '';  build() {    Column({ space: 20 }) {      // 书籍选择下拉框:直接用数组传选项,更简洁      Select(this.books)        .width("50%") // 宽度占50%,精致小巧        .onSelect((i: number, v: string) => {          // 选完后更新文本内容,联动显示          this.msg = `你喜欢的书籍:${v}`;        });      // 显示选中结果的文本:像个小黑板      Text(this.msg)        .fontSize(18)        .fontWeight(FontWeight.Bold);    }    .width('100%')    .height('100%')    .justifyContent(FlexAlign.Center); // 居中显示,更美观  }}

四、小技巧:让你的Select组件更“贴心”

  1. 图标别乱加:只有需要区分选项时加图标(比如城市、分类),纯文字选项加图标反而显乱;
  2. 宽度要合适:根据选项文字长度设置width(比如城市名用80%,书籍名用50%),别太窄导致文字截断;
  3. 默认值要合理:value和selected最好对应上(比如value设为“武汉”,selected就设2),避免“显示的和默认选中的不一样”的小bug~

总结

Select组件就像APP里的“精简单选神器”——不用占用大量界面空间,还能让用户快速完成选择,不管是选城市、选书籍,还是选口味,用它准没错!按照上面的例子练一遍,分分钟就能搞定下拉单选需求,界面瞬间变清爽~


©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
IDE

暂无评论数据

发布

头像

程序员Feri

13 年编程老炮,华为开发者专家,北科大硕士,实战派技术人(开发/架构/教学/创业),拆解编程技巧、分享副业心得,记录程序员的进阶路,AI 时代一起稳稳向前。

19

帖子

0

提问

206

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255