From 42b3024efdec647266c1ae54a2a7c2c46915b380 Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Thu, 29 Jan 2015 12:49:19 -0800 Subject: [PATCH] Refine resolution order for typeface and fontFamily Previously any fontFamily value on a TextView would override a typeface value, even if the fontFamily is from a TextAppearance (for example, from the theme) and the typeface is explicitly set. This patch changes the resolution order to fontFamily set directly on the TextView, typeface set directly on the TextView, fontFamily from TextAppearance, typeface from TextAppearance. Bug: 16154223 Change-Id: I45c1e511fba8f64eb236200e3fa2e885c02b59dc --- core/java/android/widget/TextView.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index cc5d45775c265..7dc64bdd45786 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -658,6 +658,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener ColorStateList textColorLink = null; int textSize = 15; String fontFamily = null; + boolean fontFamilyExplicit = false; int typefaceIndex = -1; int styleIndex = -1; boolean allCaps = false; @@ -1012,6 +1013,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener case com.android.internal.R.styleable.TextView_fontFamily: fontFamily = a.getString(attr); + fontFamilyExplicit = true; break; case com.android.internal.R.styleable.TextView_password: @@ -1300,6 +1302,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener typefaceIndex = MONOSPACE; } + if (typefaceIndex != -1 && !fontFamilyExplicit) { + fontFamily = null; + } setTypefaceFromAttrs(fontFamily, typefaceIndex, styleIndex); if (shadowcolor != 0) {