////////////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2014-present, Egret Technology. // All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // * Neither the name of the Egret nor the // names of its contributors may be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA, // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, // EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // ////////////////////////////////////////////////////////////////////////////////////// namespace eui { /** * The TabBar class displays a set of identical tabs. * One tab can be selected at a time, and the first tab is selected by default. *
The set of tabs is defined by the dataProvider property.
* The appearance of each tab is defined by the ItemRenderer class.
You can use the TabBar control to set the active child of a ViewStack container, * as the following example shows:
*
*
*
*
*
*
*
*
*
* @version Egret 2.4
* @version eui 1.0
* @platform Web,Native
* @includeExample extension/eui/components/TabBarExample.ts
* @language en_US
*/
/**
* TabBar 类显示一组相同的选项卡。一次可以选择一个选项卡,且默认情况下选择第一个选项卡。
* 该组选项卡由 dataProvider 属性定义。
* 每个选项卡的外观由 ItemRenderer 定义。
可以使用 TabBar 控件设置 ViewStack 容器的活动子代,如下例所示:
*
*
*
*
*
*
*
*
*
* @version Egret 2.4
* @version eui 1.0
* @platform Web,Native
* @includeExample extension/eui/components/TabBarExample.ts
* @language zh_CN
*/
export class TabBar extends ListBase {
/**
* Constructor.
*
* @version Egret 2.4
* @version eui 1.0
* @platform Web,Native
* @language en_US
*/
/**
* 构造函数。
*
* @version Egret 2.4
* @version eui 1.0
* @platform Web,Native
* @language zh_CN
*/
public constructor(){
super();
this.requireSelection = true;
this.useVirtualLayout = false;
}
/**
* @inheritDoc
*
* @version Egret 2.4
* @version eui 1.0
* @platform Web,Native
*/
protected createChildren():void{
if (!this.$layout) {
let layout = new HorizontalLayout();
layout.gap = 0;
layout.horizontalAlign = JustifyAlign.JUSTIFY;
layout.verticalAlign = JustifyAlign.CONTENT_JUSTIFY;
this.$setLayout(layout);
}
super.createChildren();
}
/**
* @private
*
* @param value
*/
$setDataProvider(value:ICollection):boolean{
let dp = this.$dataProvider;
if(dp&&dp instanceof eui.ViewStack){
dp.removeEventListener(PropertyEvent.PROPERTY_CHANGE,this.onViewStackIndexChange,this);
this.removeEventListener(egret.Event.CHANGE,this.onIndexChanged,this);
}
if(value&&value instanceof eui.ViewStack){
value.addEventListener(PropertyEvent.PROPERTY_CHANGE,this.onViewStackIndexChange,this);
this.addEventListener(egret.Event.CHANGE,this.onIndexChanged,this);
}
return super.$setDataProvider(value);
}
/**
* @private
*/
private indexBeingUpdated:boolean = false;
/**
* @private
* 触摸点击的选中项改变
*/
private onIndexChanged(event:egret.Event):void{
this.indexBeingUpdated = true;
(