diff options
| -rw-r--r-- | core/java/android/widget/TextView.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 06f027013c8f..52a3f4145e7e 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -741,6 +741,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private boolean mLocalesChanged = false; private int mTextSizeUnit = -1; + // True if force bold text feature is enabled. This feature makes all text bolder. + private boolean mForceBoldTextEnabled; + private Typeface mOriginalTypeface; + // True if setKeyListener() has been explicitly called private boolean mListenerChanged = false; // True if internationalized input should be used for numbers and date and time. @@ -1649,6 +1653,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener attributes.mTypefaceIndex = MONOSPACE; } + mForceBoldTextEnabled = getContext().getResources().getConfiguration().forceBoldText + == Configuration.FORCE_BOLD_TEXT_YES; applyTextAppearance(attributes); if (isPassword) { @@ -4276,6 +4282,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener invalidate(); } } + if (newConfig.forceBoldText == Configuration.FORCE_BOLD_TEXT_YES) { + mForceBoldTextEnabled = true; + setTypeface(getTypeface()); + } else if (newConfig.forceBoldText == Configuration.FORCE_BOLD_TEXT_NO + || newConfig.forceBoldText == Configuration.FORCE_BOLD_TEXT_UNDEFINED) { + mForceBoldTextEnabled = false; + setTypeface(getTypeface()); + } } /** @@ -4427,6 +4441,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * @attr ref android.R.styleable#TextView_textStyle */ public void setTypeface(@Nullable Typeface tf) { + mOriginalTypeface = tf; + if (mForceBoldTextEnabled) { + int newWeight = tf != null ? tf.getWeight() + 300 : 400; + newWeight = Math.min(newWeight, 1000); + int typefaceStyle = tf != null ? tf.getStyle() : 0; + boolean italic = (typefaceStyle & Typeface.ITALIC) != 0; + tf = Typeface.create(tf, newWeight, italic); + } if (mTextPaint.getTypeface() != tf) { mTextPaint.setTypeface(tf); @@ -4450,7 +4472,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener */ @InspectableProperty public Typeface getTypeface() { - return mTextPaint.getTypeface(); + return mOriginalTypeface; } /** |