mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Merge pull request #271 from NativeScript/segmented-bar-android-color
Segmented bar android color
This commit is contained in:
@@ -3,3 +3,16 @@
|
||||
export function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number {
|
||||
return (<android.widget.TabHost>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 = <android.view.ViewGroup>bar.android.getTabWidget().getChildTabViewAt(tabIndex);
|
||||
var t = <android.widget.TextView>tabChild.getChildAt(1);
|
||||
|
||||
isValid = bar.color && bar.color.android === t.getCurrentTextColor();
|
||||
}
|
||||
|
||||
return isValid;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -3,3 +3,12 @@
|
||||
export function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number {
|
||||
return (<UISegmentedControl>bar.ios).numberOfSegments;
|
||||
}
|
||||
|
||||
export function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar): boolean {
|
||||
var isValid = true;
|
||||
|
||||
var attrs = (<UISegmentedControl>bar.ios).titleTextAttributesForState(UIControlState.UIControlStateNormal);
|
||||
isValid = bar.color && attrs && attrs.valueForKey(NSForegroundColorAttributeName) === bar.color.ios;
|
||||
|
||||
return isValid;
|
||||
}
|
||||
@@ -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");
|
||||
|
||||
// <snippet module="ui/segmented-bar" title="SegmentedBar">
|
||||
// # SegmentedBar
|
||||
@@ -57,6 +60,24 @@ export var testWhenSettingItemsToNonEmptyArrayTheSameAmountOfNativeItemsIsCreate
|
||||
});
|
||||
}
|
||||
|
||||
export var testWhenItemsAreBoundTheTextColorIsPreserved = function () {
|
||||
helper.buildUIAndRunTest(_createSegmentedBar(), function (views: Array<viewModule.View>) {
|
||||
var segmentedBar = <segmentedBarModule.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<viewModule.View>) {
|
||||
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
||||
|
||||
@@ -64,10 +64,11 @@ function onItemsPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
view.android.setOnTabChangedListener(null);
|
||||
view.android.setOnTabChangedListener(view._listener);
|
||||
|
||||
if (view.selectedBackgroundColor) {
|
||||
var tabHost = <android.widget.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 = <android.view.ViewGroup>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 = <android.view.ViewGroup>tabHost.getTabWidget().getChildTabViewAt(tabIndex);
|
||||
var t = <android.widget.TextView>tabChild.getChildAt(1);
|
||||
|
||||
if (view.color) {
|
||||
t.setTextColor(view.color.android);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
(<proxy.PropertyMetadata>common.SegmentedBar.itemsProperty.metadata).onSetNativeValue = onItemsPropertyChanged;
|
||||
|
||||
Reference in New Issue
Block a user