鸿蒙NEXT开发浅进阶到精通04:类似支付宝横向导航栏与list组件联动随航

写在前面

横向Scroll与list联动,达到横向导航栏效果,在APP交互中比较常见,那么在鸿蒙中如何巧妙实现呢?

1-双控制器建立,并做好区分: Scroll容器的是Scroller( ) list的是ListScroller( ), 绑定控制器

2-状态变量-两个容器子组件下标

3-建立数组,,scroll(横向导航栏标题) 与 List中ListItemGroup中的hearer对应,最好一致

4-明白控制需求

4.1-点击scroll导航栏中字条,跳转到list中对应位置

4.2-滑动List时滑到某个ListGroup时,scroll导航栏跳转选中对应字条

5-施加控制

4.1解析,(这里属于scorll对list的联动,, 由于下标相同,,,,在字条下点击获取字条下标,,点击 事件下 用lIst控制器 LS.scrollToIndex(index))

这里留意当scrollSelectIndex 控制着字条选中高亮,,下面的控制也很关键

4.2解析,

当listGroup变化时,导航栏的字条也变换,还是利用下标

在List下做onscrollToIndex()事件,,将 内容区的第一个ListItemGroup下标传给 导航栏的选中下标即可

小细节

1-如上,在List控制scroll的转换时,会发现scroll横向不能随着字条选中滚动,导致选中后面的字条,还没转到视觉范围内容, 利用手机宽度内最大展示字条数(如本案例截图的 3 由此而来)作为判断条件,当到达后控制scroll的实际滚动 sc.scrollBy( 100,0) 第一是x轴,第二个是y轴,,,这里的100是取自 每个字条的宽度,不是乱取的哦,,

2- scroll组件的横向是属性 .scrollable(ScrollDirection.Horizontal)

3-表尾---后面最后一个group滑不上来时,内容展示出来了,但最后一个Group头不能到达最上面,导致获取不到最后的下标,,scorll中最后一个字条不能被选中,,,此时多加一个表尾结构,撑场面

scss 复制代码
//表尾---后面最后一个group滑不上来时,撑场面,也可表达产品主题或广告等主题词填充不突兀
ListItem() {
  Column() {
    Image($r('app.media.0601'))
      .width('100%')
  }.width('100%')
  .height('100%')
  .justifyContent(FlexAlign.Start)
}
.height('50%') // 用百分比是比较好的,不担心上面的距离,肯定能撑起来最后一个表结构内容
相关推荐
花先锋队长12 分钟前
鸿蒙6.1加持菜鸟App:地理围栏+实况窗,靠近驿站自动提醒,取件不再遗漏
华为·智能手机·harmonyos
nashane19 分钟前
HarmonyOS 6学习:页面跳转弹窗状态保持全解析
学习·华为·harmonyos·harmonyos 5
山楂树の20 分钟前
图像标注大坑:img图片 + Canvas 叠加标注,同步放大后标注位置偏移、对不齐?详解修复方案及亚像素处理原理
前端·css·学习·canva可画
本山德彪22 分钟前
我做了一个拼豆图纸生成器,把照片秒变图纸
前端
maaath24 分钟前
【maaath】Flutter for OpenHarmony 实战:电影榜单应用开发指南
flutter·华为·harmonyos
DTrader1 小时前
用TS无法实盘量化? - 实盘均线策略
前端·api
进击的夸父1 小时前
vfojs:Vue 超集架构,外壳React灵魂Vue
前端
编程老船长1 小时前
解决不同项目需要不同 Node.js 版本的问题
前端·vue.js
Wect1 小时前
LeetCode 5. 最长回文子串:DP + 中心扩展
前端·算法·typescript
漫游的渔夫1 小时前
前端开发者做 Agent:别写成一次请求,用 5 步受控循环防止 AI 乱跑
前端·人工智能·typescript