diff --git a/apps/tests/ui/segmented-bar/segmented-bar-tests-native.android.ts b/apps/tests/ui/segmented-bar/segmented-bar-tests-native.android.ts index 7cc46f59d..e1b4ee2b9 100644 --- a/apps/tests/ui/segmented-bar/segmented-bar-tests-native.android.ts +++ b/apps/tests/ui/segmented-bar/segmented-bar-tests-native.android.ts @@ -2,4 +2,17 @@ export function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number { return (bar.android).getTabWidget().getTabCount(); +} + +export function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar): boolean { + var isValid = true; + + for (var tabIndex = 0; tabIndex < bar.android.getTabWidget().getTabCount(); tabIndex++) { + var tabChild = bar.android.getTabWidget().getChildTabViewAt(tabIndex); + var t = tabChild.getChildAt(1); + + isValid = bar.color && bar.color.android === t.getCurrentTextColor(); + } + + return isValid; } \ No newline at end of file diff --git a/apps/tests/ui/segmented-bar/segmented-bar-tests-native.d.ts b/apps/tests/ui/segmented-bar/segmented-bar-tests-native.d.ts index e19fbcac1..ce4e435cf 100644 --- a/apps/tests/ui/segmented-bar/segmented-bar-tests-native.d.ts +++ b/apps/tests/ui/segmented-bar/segmented-bar-tests-native.d.ts @@ -2,3 +2,5 @@ import segmentedBarModule = require("ui/segmented-bar"); export declare function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number; + +export declare function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar): boolean; diff --git a/apps/tests/ui/segmented-bar/segmented-bar-tests-native.ios.ts b/apps/tests/ui/segmented-bar/segmented-bar-tests-native.ios.ts index 81bc3502f..39766a1b9 100644 --- a/apps/tests/ui/segmented-bar/segmented-bar-tests-native.ios.ts +++ b/apps/tests/ui/segmented-bar/segmented-bar-tests-native.ios.ts @@ -2,4 +2,13 @@ export function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number { return (bar.ios).numberOfSegments; +} + +export function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar): boolean { + var isValid = true; + + var attrs = (bar.ios).titleTextAttributesForState(UIControlState.UIControlStateNormal); + isValid = bar.color && attrs && attrs.valueForKey(NSForegroundColorAttributeName) === bar.color.ios; + + return isValid; } \ No newline at end of file diff --git a/apps/tests/ui/segmented-bar/segmented-bar-tests.ts b/apps/tests/ui/segmented-bar/segmented-bar-tests.ts index c740feeaa..68faee747 100644 --- a/apps/tests/ui/segmented-bar/segmented-bar-tests.ts +++ b/apps/tests/ui/segmented-bar/segmented-bar-tests.ts @@ -2,6 +2,9 @@ import helper = require("../helper"); import viewModule = require("ui/core/view"); import segmentedBarTestsNative = require("./segmented-bar-tests-native"); +import bindable = require("ui/core/bindable"); +import observable = require("data/observable"); +import color = require("color"); // // # SegmentedBar @@ -57,6 +60,24 @@ export var testWhenSettingItemsToNonEmptyArrayTheSameAmountOfNativeItemsIsCreate }); } +export var testWhenItemsAreBoundTheTextColorIsPreserved = function () { + helper.buildUIAndRunTest(_createSegmentedBar(), function (views: Array) { + var segmentedBar = views[0]; + segmentedBar.color = new color.Color("red"); + + var model = new observable.Observable(); + model.set("items", [{ title: "One" }, { title: "Two" }, { title: "Three" }]); + var options: bindable.BindingOptions = { + sourceProperty: "items", + targetProperty: "items" + } + + segmentedBar.bind(options, model); + + TKUnit.assert(segmentedBarTestsNative.checkNativeItemsTextColor(segmentedBar), "Items text color not preserved" + "; Expected: " + segmentedBar.color); + }); +} + export var testWhenSettingItemsToEmptyArrayZeroNativeItemsAreCreated = function () { helper.buildUIAndRunTest(_createSegmentedBar(), function (views: Array) { var segmentedBar = views[0]; diff --git a/ui/segmented-bar/segmented-bar.android.ts b/ui/segmented-bar/segmented-bar.android.ts index 2446a2bba..bb4ac9fc5 100644 --- a/ui/segmented-bar/segmented-bar.android.ts +++ b/ui/segmented-bar/segmented-bar.android.ts @@ -64,10 +64,11 @@ function onItemsPropertyChanged(data: dependencyObservable.PropertyChangeData) { view.android.setOnTabChangedListener(null); view.android.setOnTabChangedListener(view._listener); - if (view.selectedBackgroundColor) { - var tabHost = view.android; + var tabHost = view.android; + var tabIndex: number; - for (var tabIndex = 0; tabIndex < tabHost.getTabWidget().getTabCount(); tabIndex++) { + if (view.selectedBackgroundColor) { + for (tabIndex = 0; tabIndex < tabHost.getTabWidget().getTabCount(); tabIndex++) { var vg = tabHost.getTabWidget().getChildTabViewAt(tabIndex); var stateDrawable = new android.graphics.drawable.StateListDrawable(); @@ -82,6 +83,15 @@ function onItemsPropertyChanged(data: dependencyObservable.PropertyChangeData) { vg.setBackgroundDrawable(stateDrawable); } } + + for (tabIndex = 0; tabIndex < tabHost.getTabWidget().getTabCount(); tabIndex++) { + var tabChild = tabHost.getTabWidget().getChildTabViewAt(tabIndex); + var t = tabChild.getChildAt(1); + + if (view.color) { + t.setTextColor(view.color.android); + } + } } } (common.SegmentedBar.itemsProperty.metadata).onSetNativeValue = onItemsPropertyChanged;