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 {
|
export function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number {
|
||||||
return (<android.widget.TabHost>bar.android).getTabWidget().getTabCount();
|
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");
|
import segmentedBarModule = require("ui/segmented-bar");
|
||||||
|
|
||||||
export declare function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number;
|
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 {
|
export function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): number {
|
||||||
return (<UISegmentedControl>bar.ios).numberOfSegments;
|
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 helper = require("../helper");
|
||||||
import viewModule = require("ui/core/view");
|
import viewModule = require("ui/core/view");
|
||||||
import segmentedBarTestsNative = require("./segmented-bar-tests-native");
|
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">
|
// <snippet module="ui/segmented-bar" title="SegmentedBar">
|
||||||
// # 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 () {
|
export var testWhenSettingItemsToEmptyArrayZeroNativeItemsAreCreated = function () {
|
||||||
helper.buildUIAndRunTest(_createSegmentedBar(), function (views: Array<viewModule.View>) {
|
helper.buildUIAndRunTest(_createSegmentedBar(), function (views: Array<viewModule.View>) {
|
||||||
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
||||||
|
|||||||
@@ -64,10 +64,11 @@ function onItemsPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
|||||||
view.android.setOnTabChangedListener(null);
|
view.android.setOnTabChangedListener(null);
|
||||||
view.android.setOnTabChangedListener(view._listener);
|
view.android.setOnTabChangedListener(view._listener);
|
||||||
|
|
||||||
if (view.selectedBackgroundColor) {
|
|
||||||
var tabHost = <android.widget.TabHost>view.android;
|
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 vg = <android.view.ViewGroup>tabHost.getTabWidget().getChildTabViewAt(tabIndex);
|
||||||
|
|
||||||
var stateDrawable = new android.graphics.drawable.StateListDrawable();
|
var stateDrawable = new android.graphics.drawable.StateListDrawable();
|
||||||
@@ -82,6 +83,15 @@ function onItemsPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
|||||||
vg.setBackgroundDrawable(stateDrawable);
|
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;
|
(<proxy.PropertyMetadata>common.SegmentedBar.itemsProperty.metadata).onSetNativeValue = onItemsPropertyChanged;
|
||||||
|
|||||||
Reference in New Issue
Block a user