This commit is contained in:
Hristo Hristov
2016-12-05 00:58:20 +02:00
committed by Hristo Hristov
parent a64847ca9d
commit 079830e9b5
3 changed files with 149 additions and 292 deletions

View File

@@ -5,14 +5,13 @@ import { Bindable } from "ui/core/bindable";
import { isIOS } from "platform";
import { Color } from "color";
import types = require("utils/types");
import trace = require("trace");
export let traceCategory = "TabView";
export const traceCategory = "TabView";
// TODO: Change base class to ViewBase and use addView method to add it.
// This way we will support property and binding propagation automatically.
export class TabViewItemBase extends Bindable implements TabViewItemDefinition {
export abstract class TabViewItemBase extends Bindable implements TabViewItemDefinition {
private _title: string = "";
private _view: View;
private _iconSource: string;
@@ -31,7 +30,6 @@ export class TabViewItemBase extends Bindable implements TabViewItemDefinition {
get view(): View {
return this._view;
}
set view(value: View) {
if (this._view !== value) {
if (this._view) {
@@ -45,7 +43,6 @@ export class TabViewItemBase extends Bindable implements TabViewItemDefinition {
get iconSource(): string {
return this._iconSource;
}
set iconSource(value: string) {
if (this._iconSource !== value) {
this._iconSource = value;
@@ -53,9 +50,7 @@ export class TabViewItemBase extends Bindable implements TabViewItemDefinition {
}
}
public _update() {
//
}
public abstract _update();
}
export module knownCollections {
@@ -78,20 +73,6 @@ export class TabViewBase extends View implements TabViewDefinition, AddArrayFrom
}
}
public _onItemsPropertyChangedSetNativeValue() {
let oldValue = this.previousItems;
if (oldValue) {
this._removeTabs(oldValue);
}
let newValue = this.items;
if (newValue) {
this._addTabs(newValue);
}
this._updateSelectedIndexOnItemsPropertyChanged(newValue);
}
public _updateSelectedIndexOnItemsPropertyChanged(newItems) {
if (trace.enabled) {
trace.write("TabView._updateSelectedIndexOnItemsPropertyChanged(" + newItems + ");", traceCategory);
@@ -104,7 +85,7 @@ export class TabViewBase extends View implements TabViewDefinition, AddArrayFrom
if (newItemsCount === 0) {
this.selectedIndex = undefined;
}
else if (types.isUndefined(this.selectedIndex) || this.selectedIndex >= newItemsCount) {
else if (this.selectedIndex < 0 || this.selectedIndex >= newItemsCount) {
this.selectedIndex = 0;
}
}
@@ -143,13 +124,13 @@ export class TabViewBase extends View implements TabViewDefinition, AddArrayFrom
public _onSelectedIndexPropertyChangedSetNativeValue() {
let index = this.selectedIndex;
if (types.isUndefined(index)) {
if (index < 0) {
return;
}
if (types.isDefined(this.items)) {
if (index < 0 || index >= this.items.length) {
this.selectedIndex = undefined;
if (this.items) {
if (index >= this.items.length) {
this.selectedIndex = unsetValue;
throw new Error("SelectedIndex should be between [0, items.length)");
}
}
@@ -194,9 +175,8 @@ export class TabViewBase extends View implements TabViewDefinition, AddArrayFrom
public _onBindingContextChanged(oldValue: any, newValue: any) {
super._onBindingContextChanged(oldValue, newValue);
if (this.items && this.items.length > 0) {
let i = 0;
let length = this.items.length;
for (; i < length; i++) {
for (let i = 0, length = this.items.length; i < length; i++) {
this.items[i].bindingContext = newValue;
}
}
@@ -218,13 +198,6 @@ export class TabViewBase extends View implements TabViewDefinition, AddArrayFrom
this._onSelectedIndexPropertyChangedSetNativeValue();
}
get [itemsProperty.native](): TabViewItemBase[] {
return null;
}
set [itemsProperty.native](value: TabViewItemBase[]) {
this._onItemsPropertyChangedSetNativeValue();
}
public onItemsPropertyChanged(oldValue: TabViewItemDefinition[], newValue: TabViewItemDefinition[]) {
this.previousItems = oldValue;
}

View File

@@ -1,29 +1,23 @@
import common = require("./tab-view-common");
import definition = require("ui/tab-view");
import dependencyObservable = require("ui/core/dependency-observable");
import view = require("ui/core/view");
import { TabViewBase, TabViewItemBase, itemsProperty, selectedIndexProperty, selectedColorProperty, tabsBackgroundColorProperty, traceCategory } from "./tab-view-common"
import { View, colorProperty, fontInternalProperty } from "ui/core/view";
import { Property } from "ui/core/properties";
import { Bindable } from "ui/core/bindable";
import { isIOS } from "platform";
import { Color } from "color";
import { Font } from "ui/styling/font";
import { fromFileOrResource } from "image-source";
import trace = require("trace");
import types = require("utils/types");
import utils = require("utils/utils");
import style = require("ui/styling/style");
import font = require("ui/styling/font");
import * as imageSourceModule from "image-source";
var imageSource: typeof imageSourceModule;
function ensureImageSource() {
if (!imageSource) {
imageSource = require("image-source");
}
}
export * from "./tab-view-common";
var VIEWS_STATES = "_viewStates";
var ACCENT_COLOR = "colorAccent";
var PRIMARY_COLOR = "colorPrimary";
var DEFAULT_ELEVATION = 4;
global.moduleMerge(common, exports);
export class TabViewItem extends common.TabViewItem {
const VIEWS_STATES = "_viewStates";
const ACCENT_COLOR = "colorAccent";
const PRIMARY_COLOR = "colorPrimary";
const DEFAULT_ELEVATION = 4;
export class TabViewItem extends TabViewItemBase {
public _parent: TabView;
public _update() {
@@ -33,7 +27,7 @@ export class TabViewItem extends common.TabViewItem {
}
}
var PagerAdapterClass;
let PagerAdapterClass;
function ensurePagerAdapterClass() {
if (PagerAdapterClass) {
return;
@@ -41,9 +35,9 @@ function ensurePagerAdapterClass() {
class PagerAdapterClassInner extends android.support.v4.view.PagerAdapter {
private owner: TabView;
private items: Array<definition.TabViewItem>;
private items: Array<TabViewItem>;
constructor(owner: TabView, items: Array<definition.TabViewItem>) {
constructor(owner: TabView, items: Array<TabViewItem>) {
super();
this.owner = owner;
@@ -66,17 +60,17 @@ function ensurePagerAdapterClass() {
instantiateItem(container: android.view.ViewGroup, index: number) {
if (trace.enabled) {
trace.write("TabView.PagerAdapter.instantiateItem; container: " + container + "; index: " + index, common.traceCategory);
trace.write("TabView.PagerAdapter.instantiateItem; container: " + container + "; index: " + index, traceCategory);
}
var item = this.items[index];
let item = this.items[index];
if (item.view.parent !== this.owner) {
this.owner._addView(item.view);
}
if (this[VIEWS_STATES]) {
if (trace.enabled) {
trace.write("TabView.PagerAdapter.instantiateItem; restoreHierarchyState: " + item.view, common.traceCategory);
trace.write("TabView.PagerAdapter.instantiateItem; restoreHierarchyState: " + item.view, traceCategory);
}
item.view._nativeView.restoreHierarchyState(this[VIEWS_STATES]);
}
@@ -87,10 +81,10 @@ function ensurePagerAdapterClass() {
destroyItem(container: android.view.ViewGroup, index: number, _object: any) {
if (trace.enabled) {
trace.write("TabView.PagerAdapter.destroyItem; container: " + container + "; index: " + index + "; _object: " + _object, common.traceCategory);
trace.write("TabView.PagerAdapter.destroyItem; container: " + container + "; index: " + index + "; _object: " + _object, traceCategory);
}
var item = this.items[index];
var nativeView = item.view._nativeView;
let item = this.items[index];
let nativeView = item.view._nativeView;
if (nativeView.toString() !== _object.toString()) {
throw new Error("Expected " + nativeView.toString() + " to equal " + _object.toString());
@@ -111,10 +105,10 @@ function ensurePagerAdapterClass() {
saveState(): android.os.Parcelable {
if (trace.enabled) {
trace.write("TabView.PagerAdapter.saveState", common.traceCategory);
trace.write("TabView.PagerAdapter.saveState", traceCategory);
}
var owner: TabView = this.owner;
let owner: TabView = this.owner;
if (!owner || owner._childrenCount === 0) {
return null;
}
@@ -122,9 +116,9 @@ function ensurePagerAdapterClass() {
if (!this[VIEWS_STATES]) {
this[VIEWS_STATES] = new android.util.SparseArray<android.os.Parcelable>();
}
var viewStates = this[VIEWS_STATES];
var childCallback = function (view: view.View): boolean {
var nativeView: android.view.View = view._nativeView;
let viewStates = this[VIEWS_STATES];
let childCallback = function (view: View): boolean {
let nativeView: android.view.View = view._nativeView;
if (nativeView && nativeView.isSaveFromParentEnabled && nativeView.isSaveFromParentEnabled()) {
nativeView.saveHierarchyState(viewStates);
}
@@ -132,16 +126,16 @@ function ensurePagerAdapterClass() {
}
owner._eachChildView(childCallback);
var bundle = new android.os.Bundle();
let bundle = new android.os.Bundle();
bundle.putSparseParcelableArray(VIEWS_STATES, viewStates);
return bundle;
}
restoreState(state: android.os.Parcelable, loader: java.lang.ClassLoader) {
if (trace.enabled) {
trace.write("TabView.PagerAdapter.restoreState", common.traceCategory);
trace.write("TabView.PagerAdapter.restoreState", traceCategory);
}
var bundle: android.os.Bundle = <android.os.Bundle>state;
let bundle: android.os.Bundle = <android.os.Bundle>state;
bundle.setClassLoader(loader);
this[VIEWS_STATES] = bundle.getSparseParcelableArray(VIEWS_STATES);
}
@@ -150,7 +144,7 @@ function ensurePagerAdapterClass() {
PagerAdapterClass = PagerAdapterClassInner;
}
var PageChangedListenerClass;
let PageChangedListenerClass;
function ensurePageChangedListenerClass() {
if (PageChangedListenerClass) {
return;
@@ -172,7 +166,7 @@ function ensurePageChangedListenerClass() {
PageChangedListenerClass = PageChangedListener;
}
export class TabView extends common.TabView {
export class TabView extends TabViewBase {
private _grid: org.nativescript.widgets.GridLayout;
private _tabLayout: org.nativescript.widgets.TabLayout;
private _viewPager: android.support.v4.view.ViewPager;
@@ -187,7 +181,7 @@ export class TabView extends common.TabView {
public _createUI() {
if (trace.enabled) {
trace.write("TabView._createUI(" + this + ");", common.traceCategory);
trace.write("TabView._createUI(" + this + ");", traceCategory);
}
this._grid = new org.nativescript.widgets.GridLayout(this._context);
@@ -212,13 +206,13 @@ export class TabView extends common.TabView {
if (this._androidViewId < 0) {
this._androidViewId = android.view.View.generateViewId();
}
this._viewPager = new android.support.v4.view.ViewPager(this._context);
if (this._androidOffscreenTabLimit !== 1) {
this._viewPager.setOffscreenPageLimit(this._androidOffscreenTabLimit);
}
this._viewPager.setId(this._androidViewId);
var lp = new org.nativescript.widgets.CommonLayoutParams();
let lp = new org.nativescript.widgets.CommonLayoutParams();
lp.row = 1;
this._viewPager.setLayoutParams(lp);
this._grid.addView(this._viewPager);
@@ -229,7 +223,7 @@ export class TabView extends common.TabView {
}
private setElevation() {
var compat = <any>android.support.v4.view.ViewCompat;
let compat = <any>android.support.v4.view.ViewCompat;
if (compat.setElevation) {
let val = DEFAULT_ELEVATION * utils.layout.getDisplayDensity();
compat.setElevation(this._grid, val);
@@ -237,28 +231,24 @@ export class TabView extends common.TabView {
}
}
public _onItemsPropertyChangedSetNativeValue(data: dependencyObservable.PropertyChangeData) {
if (trace.enabled) {
trace.write("TabView._onItemsPropertyChangedSetNativeValue(" + data.oldValue + " ---> " + data.newValue + ");", common.traceCategory);
}
if (data.oldValue) {
var oldItems: Array<TabViewItem> = data.oldValue;
public _onItemsPropertyChangedSetNativeValue() {
let oldItems = <TabViewItem[]>this.previousItems;
if (oldItems) {
oldItems.forEach((oldItem) => {
// _removeView is called within destroyItem method
oldItem._parent = null;
oldItem._parent = null;
});
this._viewPager.setAdapter(null);
this._pagerAdapter = null;
this._tabLayout.setItems(null, null);
}
if (data.newValue) {
var items: Array<TabViewItem> = data.newValue;
var tabItems = new Array<org.nativescript.widgets.TabItemSpec>();
let items = <TabViewItem[]>this.items;
if (items) {
let tabItems = new Array<org.nativescript.widgets.TabItemSpec>();
items.forEach((item, idx, arr) => {
if (types.isNullOrUndefined(item.view)) {
if (!item.view) {
throw new Error("View of TabViewItem at index " + idx + " is " + item.view);
}
@@ -270,48 +260,49 @@ export class TabView extends common.TabView {
});
ensurePagerAdapterClass();
this._pagerAdapter = new PagerAdapterClass(this, data.newValue);
// TODO: optimize by reusing the adapter and calling setAdapter(null) then the same adapter.
this._pagerAdapter = new PagerAdapterClass(this, items);
this._viewPager.setAdapter(this._pagerAdapter);
this._tabLayout.setItems(tabItems, this._viewPager);
}
this._updateSelectedIndexOnItemsPropertyChanged(data.newValue);
this._updateSelectedIndexOnItemsPropertyChanged(items);
}
public _updateTabForItem(item: TabViewItem) {
if (this.items && this.items.length > 0) {
var index = this.items.indexOf(item);
let index = this.items.indexOf(item);
if (index >= 0) {
this._tabLayout.updateItemAt(index, this.createTabItem(item));
}
}
}
public _onSelectedIndexPropertyChangedSetNativeValue(data: dependencyObservable.PropertyChangeData) {
public _onSelectedIndexPropertyChangedSetNativeValue() {
if (trace.enabled) {
trace.write("TabView._onSelectedIndexPropertyChangedSetNativeValue(" + data.oldValue + " ---> " + data.newValue + ");", common.traceCategory);
trace.write("TabView._onSelectedIndexPropertyChangedSetNativeValue(" + data.oldValue + " ---> " + data.newValue + ");", traceCategory);
}
super._onSelectedIndexPropertyChangedSetNativeValue(data);
var index = data.newValue;
let index = data.newValue;
if (!types.isNullOrUndefined(index)) {
// Select the respective page in the ViewPager
var viewPagerSelectedIndex = this._viewPager.getCurrentItem();
let viewPagerSelectedIndex = this._viewPager.getCurrentItem();
if (viewPagerSelectedIndex !== index) {
if (trace.enabled) {
trace.write("TabView this._viewPager.setCurrentItem(" + index + ", true);", common.traceCategory);
trace.write("TabView this._viewPager.setCurrentItem(" + index + ", true);", traceCategory);
}
this._viewPager.setCurrentItem(index, true);
}
}
var args = { eventName: TabView.selectedIndexChangedEvent, object: this, oldIndex: data.oldValue, newIndex: data.newValue };
let args = { eventName: TabView.selectedIndexChangedEvent, object: this, oldIndex: data.oldValue, newIndex: data.newValue };
this.notify(args);
}
private createTabItem(item: definition.TabViewItem): org.nativescript.widgets.TabItemSpec {
var result = new org.nativescript.widgets.TabItemSpec();
private createTabItem(item: TabViewItem): org.nativescript.widgets.TabItemSpec {
let result = new org.nativescript.widgets.TabItemSpec();
result.title = item.title;
if (item.iconSource) {
@@ -320,9 +311,7 @@ export class TabView extends common.TabView {
result.iconId = utils.ad.resources.getDrawableId(item.iconSource.substr(utils.RESOURCE_PREFIX.length));
}
else {
ensureImageSource();
var is = imageSource.fromFileOrResource(item.iconSource);
let is = imageSource.fromFileOrResource(item.iconSource);
if (is) {
result.iconDrawable = new android.graphics.drawable.BitmapDrawable(is.android);
}
@@ -332,206 +321,100 @@ export class TabView extends common.TabView {
return result;
}
public _getAndroidTabView(): org.nativescript.widgets.TabLayout {
return this._tabLayout;
get [itemsProperty.native](): TabViewItemBase[] {
return null;
}
set [itemsProperty.native](value: TabViewItemBase[]) {
this._onItemsPropertyChangedSetNativeValue();
}
private _androidOffscreenTabLimit: number = 1;
get androidOffscreenTabLimit(): number {
return this._androidOffscreenTabLimit;
get [selectedColorProperty.native](): number {
//from https://developer.android.com/samples/SlidingTabsColors/src/com.example.android.common/view/SlidingTabStrip.html
return 0xFF33B5E5;
}
set androidOffscreenTabLimit(value: number) {
if (value !== this._androidOffscreenTabLimit) {
this._androidOffscreenTabLimit = value;
if (this._viewPager) {
this._viewPager.setOffscreenPageLimit(value);
}
set [selectedColorProperty.native](value: number | Color) {
let tabLayout = this._tabLayout;
let color = value instanceof Color ? value.android : value;
tabLayout.setSelectedIndicatorColors([color]);
}
get [tabsBackgroundColorProperty.native](): android.graphics.drawable.Drawable {
return this._tabLayout.getBackground();
}
set [tabsBackgroundColorProperty.native](value: android.graphics.drawable.Drawable | Color) {
if (value instanceof Color) {
this._tabLayout.setBackgroundColor(value.android);
} else {
this._tabLayout.setBackground(value);
}
}
}
get [colorProperty.native](): number {
let items = this.items;
if (items && items.length > 0) {
let tv = this._tabLayout.getTextViewForItemAt(0);
if (tv) {
return tv.getTextColors().getDefaultColor();
}
}
export class TabViewStyler implements style.Styler {
return undefined;
}
set [colorProperty.native](value: number | Color) {
let items = this.items;
if (items && items.length > 0) {
let color = value instanceof Color ? value.android : value;
let tabLayout = this._tabLayout;
// font
private static setFontInternalProperty(v: view.View, newValue: any, nativeValue?: any) {
var tab = <definition.TabView>v;
var fontValue = <font.Font>newValue;
var typeface = fontValue.getAndroidTypeface();
if (tab.items && tab.items.length > 0) {
var tabLayout = tab._getAndroidTabView();
for (var i = 0; i < tab.items.length; i++) {
for (let i = 0, length = items.length; i < length; i++) {
let tv = tabLayout.getTextViewForItemAt(i);
if (typeface) {
tv.setTypeface(typeface);
}
else {
tv.setTypeface(nativeValue.typeface);
}
if (fontValue.fontSize) {
tv.setTextSize(fontValue.fontSize);
}
else {
tv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, nativeValue.size);
}
tv.setTextColor(color);
}
}
}
private static resetFontInternalProperty(v: view.View, nativeValue: any) {
var tab = <definition.TabView>v;
if (tab.items && tab.items.length > 0) {
var tabLayout = tab._getAndroidTabView();
for (var i = 0; i < tab.items.length; i++) {
let tv = tabLayout.getTextViewForItemAt(i);
tv.setTypeface(nativeValue.typeface);
tv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, nativeValue.size);
}
}
}
private static getNativeFontInternalValue(v: view.View): any {
var tab = <definition.TabView>v;
var tv: android.widget.TextView = tab._getAndroidTabView().getTextViewForItemAt(0);
if (tv) {
get [fontInternalProperty.native](): { typeface: android.graphics.Typeface, fontSize: number } {
let items = this.items;
if (items && items.length > 0) {
let tabLayout = this._tabLayout;
let tv = tabLayout.getTextViewForItemAt(0);
return {
typeface: tv.getTypeface(),
size: tv.getTextSize()
fontSize: tv.getTextSize()
};
}
return {
typeface: undefined,
fontSize: undefined
};
}
set [fontInternalProperty.native](value: Font | { typeface: android.graphics.Typeface, fontSize: number }) {
let typeface: android.graphics.Typeface;
let fontSize = value.fontSize;
let isFont: boolean;
if (value instanceof Font) {
isFont = true;
typeface = value.getAndroidTypeface();
} else {
typeface = value.typeface;
}
let items = this.items;
if (items && items.length > 0) {
let tabLayout = this._tabLayout;
for (let i = 0, length = items.length; i < length; i++) {
let tv = tabLayout.getTextViewForItemAt(i);
tv.setTypeface(typeface);
if (isFont) {
tv.setTextSize(fontSize);
}
else {
tv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, fontSize);
}
}
}
else {
return null;
}
}
// tab-text-color
private static setTabTextColorProperty(v: view.View, newValue: any) {
var tabLayout = (<definition.TabView>v)._getAndroidTabView();
tabLayout.setTabTextColor(types.isNumber(newValue) ? new java.lang.Integer(newValue) : newValue);
}
private static resetTabTextColorProperty(v: view.View, nativeValue: any) {
var tabLayout = (<definition.TabView>v)._getAndroidTabView();
tabLayout.setTabTextColor(types.isNumber(nativeValue) ? new java.lang.Integer(nativeValue) : nativeValue);
}
private static getTabTextColorProperty(v: view.View): any {
var tabLayout = (<definition.TabView>v)._getAndroidTabView();
return tabLayout.getTabTextColor();
}
//tab-background-color
private static setTabBackgroundColorProperty(v: view.View, newValue: any) {
var tabLayout = (<definition.TabView>v)._getAndroidTabView();
tabLayout.setBackgroundColor(newValue);
}
private static resetTabBackgroundColorProperty(v: view.View, nativeValue: any) {
var tabLayout = (<definition.TabView>v)._getAndroidTabView();
tabLayout.setBackgroundColor(nativeValue);
}
private static getTabBackgroundColorProperty(v: view.View): any {
var tabLayout = (<definition.TabView>v)._getAndroidTabView();
let background = tabLayout.getBackground();
if (background instanceof android.graphics.drawable.ColorDrawable){
return (<android.graphics.drawable.ColorDrawable>background).getColor();
}
return null;
}
//selected-tab-text-color
private static setSelectedTabTextColorProperty(v: view.View, newValue: any) {
var tabLayout = (<definition.TabView>v)._getAndroidTabView();
tabLayout.setSelectedTabTextColor(types.isNumber(newValue) ? new java.lang.Integer(newValue) : newValue);
}
private static resetSelectedTabTextColorProperty(v: view.View, nativeValue: any) {
var tabLayout = (<definition.TabView>v)._getAndroidTabView();
tabLayout.setSelectedTabTextColor(types.isNumber(nativeValue) ? new java.lang.Integer(nativeValue) : nativeValue);
}
private static getSelectedTabTextColorProperty(v: view.View): any {
var tabLayout = (<definition.TabView>v)._getAndroidTabView();
return tabLayout.getSelectedTabTextColor();
}
// android-selected-tab-highlight-color-property
private static setAndroidSelectedTabHighlightColorProperty(v: view.View, newValue: any) {
let tabLayout = (<TabView>v)._getAndroidTabView();
tabLayout.setSelectedIndicatorColors([newValue]);
}
private static resetAndroidSelectedTabHighlightColorProperty(v: view.View, nativeValue: any) {
let tabLayout = (<TabView>v)._getAndroidTabView();
tabLayout.setSelectedIndicatorColors([nativeValue]);
}
private static getAndroidSelectedTabHighlightColorProperty(v: view.View): any {
let tabLayout = (<TabView>v)._getAndroidTabView();
let selectedIndicatorColors = tabLayout.getSelectedIndicatorColors();
return selectedIndicatorColors.length > 0 ? selectedIndicatorColors[0] : null;
}
// text-transform
private static setTextTransformProperty(v: view.View, newValue: any) {
let tabView = <TabView>v;
let tabLayout = tabView._getAndroidTabView();
for (let i = 0; i < tabView.items.length; i++) {
let textView = tabLayout.getTextViewForItemAt(i);
let str = tabView.items[i].title;
let result = utils.ad.getTransformedString(newValue, textView, str);
textView.setText(result);
}
}
private static resetTextTransformProperty(v: view.View, nativeValue: any) {
let tabView = <TabView>v;
let tabLayout = tabView._getAndroidTabView();
for (let i = 0; i < tabView.items.length; i++) {
let textView = tabLayout.getTextViewForItemAt(i);
let str = tabView.items[i].title;
let result = utils.ad.getTransformedString(nativeValue, textView, str);
textView.setText(result);
}
}
public static registerHandlers() {
style.registerHandler(style.fontInternalProperty, new style.StylePropertyChangedHandler(
TabViewStyler.setFontInternalProperty,
TabViewStyler.resetFontInternalProperty,
TabViewStyler.getNativeFontInternalValue), "TabView");
style.registerHandler(style.tabTextColorProperty, new style.StylePropertyChangedHandler(
TabViewStyler.setTabTextColorProperty,
TabViewStyler.resetTabTextColorProperty,
TabViewStyler.getTabTextColorProperty), "TabView");
style.registerHandler(style.tabBackgroundColorProperty, new style.StylePropertyChangedHandler(
TabViewStyler.setTabBackgroundColorProperty,
TabViewStyler.resetTabBackgroundColorProperty,
TabViewStyler.getTabBackgroundColorProperty), "TabView");
style.registerHandler(style.selectedTabTextColorProperty, new style.StylePropertyChangedHandler(
TabViewStyler.setSelectedTabTextColorProperty,
TabViewStyler.resetSelectedTabTextColorProperty,
TabViewStyler.getSelectedTabTextColorProperty), "TabView");
style.registerHandler(style.androidSelectedTabHighlightColorProperty, new style.StylePropertyChangedHandler(
TabViewStyler.setAndroidSelectedTabHighlightColorProperty,
TabViewStyler.resetAndroidSelectedTabHighlightColorProperty,
TabViewStyler.getAndroidSelectedTabHighlightColorProperty), "TabView");
style.registerHandler(style.textTransformProperty, new style.StylePropertyChangedHandler(
TabViewStyler.setTextTransformProperty,
TabViewStyler.resetTextTransformProperty), "TabView");
}
}
TabViewStyler.registerHandlers();

View File

@@ -144,4 +144,5 @@ declare module "ui/tab-view" {
export const itemsProperty: Property<TabView, TabViewItem[]>;
export const selectedIndexProperty: Property<TabView, number>;
export const selectedColorProperty: Property<TabView, Color>;
export const tabsBackgroundColorProperty: Property<TabView, Color>;
}