From ac91df87fce48afe1b5585551f24b0c21b7ab091 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Thu, 14 Feb 2013 13:48:47 -0800 Subject: [PATCH] Add support for shadows in TextAppearance styles Allow developers to specify shadow properties for text in a TextAppearance, not just in direct TextView attributes. Change-Id: I873fbaf2c26683895e1eea2d02b5d9b17ca333d0 --- core/java/android/widget/TextView.java | 33 ++++++++++++++++++++++++-- core/res/res/values/attrs.xml | 16 +++++++++---- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index cad7ae329530c..a1ced6e01b9b8 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -607,6 +607,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener int typefaceIndex = -1; int styleIndex = -1; boolean allCaps = false; + int shadowcolor = 0; + float dx = 0, dy = 0, r = 0; final Resources.Theme theme = context.getTheme(); @@ -667,6 +669,22 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener case com.android.internal.R.styleable.TextAppearance_textAllCaps: allCaps = appearance.getBoolean(attr, false); break; + + case com.android.internal.R.styleable.TextAppearance_shadowColor: + shadowcolor = a.getInt(attr, 0); + break; + + case com.android.internal.R.styleable.TextAppearance_shadowDx: + dx = a.getFloat(attr, 0); + break; + + case com.android.internal.R.styleable.TextAppearance_shadowDy: + dy = a.getFloat(attr, 0); + break; + + case com.android.internal.R.styleable.TextAppearance_shadowRadius: + r = a.getFloat(attr, 0); + break; } } @@ -690,8 +708,6 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener int maxlength = -1; CharSequence text = ""; CharSequence hint = null; - int shadowcolor = 0; - float dx = 0, dy = 0, r = 0; boolean password = false; int inputType = EditorInfo.TYPE_NULL; @@ -2331,6 +2347,19 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener setTypefaceFromAttrs(familyName, typefaceIndex, styleIndex); + final int shadowcolor = appearance.getInt( + com.android.internal.R.styleable.TextAppearance_shadowColor, 0); + if (shadowcolor != 0) { + final float dx = appearance.getFloat( + com.android.internal.R.styleable.TextAppearance_shadowDx, 0); + final float dy = appearance.getFloat( + com.android.internal.R.styleable.TextAppearance_shadowDy, 0); + final float r = appearance.getFloat( + com.android.internal.R.styleable.TextAppearance_shadowRadius, 0); + + setShadowLayer(r, dx, dy, shadowcolor); + } + if (appearance.getBoolean(com.android.internal.R.styleable.TextAppearance_textAllCaps, false)) { setTransformationMethod(new AllCapsTransformationMethod(getContext())); diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 0fb8a105a6e2b..a3e5b2c85382c 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -3061,6 +3061,14 @@ + + + + + + + + - + - + - + - +