Appearance
Tabs
介绍:Tabs
组件是实现了类似于安卓里TabLayout
+ViewPager
,或者web
开发中一个ul
+ swiper
的组合实现的多级导航组件。
它内置了一个tv-list
的实现的tab
导航栏外加一个由ViewPager
实现的content
组合。在智能电视上通常用来实现瀑布流
效果, 性能更接近于原生安卓体验。 Tabs组件内部通过content+tab实现,目前tab仅支持<tv-list>
组件,具体使用详情请参考tv-list组件 ;content支持<recycler-view-pager>
和<tv-list>
组件(也叫单Page模式)。
注意,最低支持SDK版本
2.1
效果预览
集成
package.json
引入库点击查看源码
js"@extscreen/es-component": "3.0.1",
使用初探
点击查看源码
html
<tabs class="tabs_root"
ref="tabs"
@load-page="onLoadPageData"
@page-changed="onPageChanged"
@tab-event="onTabsEvent"
:hideOnSingleTab="true"
:dataStrategy="dataStrategy"
:suspension="true"
:blockFocusDirections="['down']">
<!-- 内容Content -->
<recycler-view-pager ref="viewPager"
id="view_pager_root">
<tv-list id="tv_content_root">
<div>
...
</div>
</tv-list>
</recycler-view-pager>
<!-- 顶部Tab -->
<tv-list class="tv_tab_root"
horizontal="true"
style="margin-top: 80px">
<div>
...
</div>
</tv-list>
</tabs>
单Page模式示例代码
点击查看源码
html
<tabs class="tabs_root"
ref="tabs"
@load-page="onLoadPageData"
@page-changed="onPageChanged"
@tab-event="onTabsEvent"
:hideOnSingleTab="true"
:dataStrategy="dataStrategy"
:suspension="true"
:blockFocusDirections="['down']"
:singlePageMode="true">
<!-- 内容Content -->
<tv-list id="tv_content_root"
:name=‘contentList’>
<div>
...
</div>
</tv-list>
<!-- 顶部Tab -->
<tv-list class="tv_tab_root"
horizontal="true"
:name='tabList'
style="margin-top: 80px">
<div>
...
</div>
</tv-list>
</tabs>
注意事项
- 在页面
create
后使用setTabsData()
方法时最好加上100ms的延迟,避免view还没加载完成就加载数据导致的加载数据失败; - 非单Page模式下,
:loadingItemType
和:outOfDateTime
属性可以配置在<recycler-view-pager>
中,效果一致; - 单Page模式下,content中的
<tv-list>
需要配置:name='contentList'
,顶部tab的<tv-list>
需要配置:name='tabList'
; - 单Page模式下,页面切换回调
onPageChanged()
失效,应使用onTabsEvent()
回调中的onTabChanged:
; - 单Page模式下,设置
:autoRefreshContent
时,需注意应配置:loadingItemType
属性,否则无效果; - 单tab下设置
:hideOnSingleTab='true'
时,onMoveToTopEnd
和onMoveToBottomEnd
回调失效,其他回调正常;
所有API详见Tabs组件API