diff options
| author | 2020-09-28 20:22:59 +0000 | |
|---|---|---|
| committer | 2020-09-28 20:22:59 +0000 | |
| commit | dfd366ed0ea014a75ff8edb6b362ea1ade8b39d2 (patch) | |
| tree | 4fd5c0ac4159c2b5f5ca7c62312075d8a500627e | |
| parent | 22b7c8fcdca60d82736b82e62da06f9645842e46 (diff) | |
| parent | 5670baef9b56cf5451a7b5d8f0853d5c9a781294 (diff) | |
Merge "Add support for Force Bold Text"
| -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;      }      /** |