目录
-
- 最终效果
- 拆开讲讲
-
- 标签由模型生成,不由代码写死
- 两处边界处理
- 把 contentItem 和 background 换掉
- animDone 是干什么的
- 几个可以调的参数
- 什么时候用
- 小结
- 完整代码
- 工程下载
有些标签栏的标签数量不固定,比如后台系统按模块开页签、浏览器开新标签,事先不知道会有几个。这种情况不能把标签一个个写死。
思路就是把标签当成一组数据来管理:加标签就是加一条数据,删标签就是删一条数据,界面自动跟着变化。
最终效果

点「添加标签」就多出一个标签,新标签从中心弹出来;点「删除当前」标签收起消失,后面的自动往前补位。
拆开讲讲
整个动态标签就四块,一块一块说。
标签由模型生成,不由代码写死
TabBar 本身是个容器,它的子项由 Repeater 生成,背后的数据来源是一个 ListModel。所以标签有几条,取决于模型里有几条记录。
三个按钮做的事都很短:往模型里加一条、删掉当前这条、清空全部。加完数据,Repeater 会自动补一个新的 TabButton 出来,不需要你手动创建对象;删掉数据后对应的按钮会被销毁,后面的标签自动往前挪。这就是数据驱动的省事之处:你操作的是数据,位置关系交给视图。
ListModel 的数量是个会自动通知的属性,底部那行标签个数显示不用手动刷新,模型一变它自己就重算。</





