diff --git a/apps/ui-tests-app/css/text-decoration.xml b/apps/ui-tests-app/css/text-decoration.xml
new file mode 100644
index 000000000..4649b52cc
--- /dev/null
+++ b/apps/ui-tests-app/css/text-decoration.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ui/styling/converters.ts b/ui/styling/converters.ts
index 4c2c9affe..b949c15d8 100644
--- a/ui/styling/converters.ts
+++ b/ui/styling/converters.ts
@@ -23,13 +23,12 @@ export function textAlignConverter(value: string): string {
}
export function textDecorationConverter(value: string): string {
- switch (value) {
- case enums.TextDecoration.none:
- case enums.TextDecoration.underline:
- case enums.TextDecoration.lineThrough:
- return value;
- default:
- throw new Error("CSS text-decoration \"" + value + "\" is not supported.");
+ var values = (value + "").split(" ");
+
+ if (values.indexOf(enums.TextDecoration.underline) !== -1 || values.indexOf(enums.TextDecoration.lineThrough) !== -1) {
+ return value;
+ } else {
+ throw new Error("CSS text-decoration \"" + value + "\" is not supported.");
}
}
diff --git a/ui/styling/style.ts b/ui/styling/style.ts
index 9a3b936bc..1513d3b87 100644
--- a/ui/styling/style.ts
+++ b/ui/styling/style.ts
@@ -240,7 +240,9 @@ function isVisibilityValid(value: string): boolean {
}
function isTextDecorationValid(value: string): boolean {
- return value === enums.TextDecoration.none || value === enums.TextDecoration.underline || value === enums.TextDecoration.lineThrough;
+ var values = (value + "").split(" ");
+
+ return values.indexOf(enums.TextDecoration.none) !== -1 || values.indexOf(enums.TextDecoration.underline) !== -1 || values.indexOf(enums.TextDecoration.lineThrough) !== -1;
}
function onVisibilityChanged(data: PropertyChangeData) {
diff --git a/ui/styling/stylers.android.ts b/ui/styling/stylers.android.ts
index 13e62cbf7..167190e90 100644
--- a/ui/styling/stylers.android.ts
+++ b/ui/styling/stylers.android.ts
@@ -469,19 +469,23 @@ export class TextViewStyler implements definition.stylers.Styler {
}
function setTextDecoration(view: android.widget.TextView, value: string) {
- switch (value) {
- case enums.TextDecoration.none:
- view.setPaintFlags(view.getPaintFlags());
- break;
- case enums.TextDecoration.underline:
- view.setPaintFlags(view.getPaintFlags() | android.graphics.Paint.UNDERLINE_TEXT_FLAG);
- break;
- case enums.TextDecoration.lineThrough:
- view.setPaintFlags(view.getPaintFlags() | android.graphics.Paint.STRIKE_THRU_TEXT_FLAG);
- break;
- default:
- break;
+ var flags = view.getPaintFlags();
+
+ var values = (value + "").split(" ");
+
+ if (values.indexOf(enums.TextDecoration.underline) !== -1) {
+ flags = flags | android.graphics.Paint.UNDERLINE_TEXT_FLAG;
}
+
+ if (values.indexOf(enums.TextDecoration.lineThrough) !== -1) {
+ flags = flags | android.graphics.Paint.STRIKE_THRU_TEXT_FLAG;
+ }
+
+ if (values.indexOf(enums.TextDecoration.none) === -1) {
+ view.setPaintFlags(flags);
+ } else {
+ view.setPaintFlags(0);
+ }
}
export class ActivityIndicatorStyler implements definition.stylers.Styler {
diff --git a/ui/styling/stylers.ios.ts b/ui/styling/stylers.ios.ts
index c1947969d..0e2950c5b 100644
--- a/ui/styling/stylers.ios.ts
+++ b/ui/styling/stylers.ios.ts
@@ -910,29 +910,32 @@ function setTextAlignment(view: TextUIView, value: string) {
}
function setTextDecoration(view: TextUIView, value: string) {
- switch (value) {
- case enums.TextDecoration.none:
- view.text = view.attributedText ? view.attributedText.string : view.text;
- break;
- case enums.TextDecoration.underline:
- setTextDecorationNative(view, view.text || view.attributedText, NSUnderlineStyleAttributeName);
- break;
- case enums.TextDecoration.lineThrough:
- setTextDecorationNative(view, view.text || view.attributedText, NSStrikethroughStyleAttributeName);
- break;
- default:
- break;
+ var attributes: NSMutableDictionary = NSMutableDictionary.alloc().init();
+ var values = (value + "").split(" ");
+
+ if (values.indexOf(enums.TextDecoration.underline) !== -1) {
+ attributes.setObjectForKey(NSUnderlineStyle.NSUnderlineStyleSingle, NSUnderlineStyleAttributeName);
+ }
+
+ if (values.indexOf(enums.TextDecoration.lineThrough) !== -1) {
+ attributes.setObjectForKey(NSUnderlineStyle.NSUnderlineStyleSingle, NSStrikethroughStyleAttributeName);
+ }
+
+ if (values.indexOf(enums.TextDecoration.none) === -1) {
+ setTextDecorationNative(view, view.text || view.attributedText, attributes);
+ } else {
+ setTextDecorationNative(view, view.text || view.attributedText, NSMutableDictionary.alloc().init());
}
}
-function setTextDecorationNative(view: TextUIView, value: string | NSAttributedString, attribute: string) {
+function setTextDecorationNative(view: TextUIView, value: string | NSAttributedString, attributes: NSMutableDictionary) {
var attributedString: NSMutableAttributedString;
if (value instanceof NSAttributedString) {
attributedString = NSMutableAttributedString.alloc().initWithAttributedString(value);
- attributedString.addAttributesRange({ [attribute]: NSUnderlineStyle.NSUnderlineStyleSingle }, NSRangeFromString(attributedString.string));
+ attributedString.addAttributesRange(attributes, NSRangeFromString(attributedString.string));
} else {
- view.attributedText = NSAttributedString.alloc().initWithStringAttributes(value, { [attribute]: NSUnderlineStyle.NSUnderlineStyleSingle });
+ view.attributedText = NSAttributedString.alloc().initWithStringAttributes(value, attributes);
}
}