diff options
| author | Behdad Esfahbod <behdad@google.com> | 2014-07-17 19:10:39 -0400 |
|---|---|---|
| committer | Behdad Esfahbod <behdad@google.com> | 2014-07-24 18:46:07 -0400 |
| commit | fa80f7491df82d71b7084500519a2195afbea706 (patch) | |
| tree | d6de0110f6b0d273257d73964c432a0871ea210e /core/java/android/widget/TextView.java | |
| parent | 09890b3a908c0f48cec4b451c1d110c2870725af (diff) | |
Add letter-spacing to Paint and TextView
New API is hidden.
Bug: 15594400
Change-Id: I5cbe7aebef0b7280eb13924f2a706c0cb4a4688e
Diffstat (limited to 'core/java/android/widget/TextView.java')
| -rw-r--r-- | core/java/android/widget/TextView.java | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index fac0eb269a26..30831cd70859 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -222,6 +222,7 @@ import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1; * @attr ref android.R.styleable#TextView_imeActionId * @attr ref android.R.styleable#TextView_editorExtras * @attr ref android.R.styleable#TextView_elegantTextHeight + * @attr ref android.R.styleable#TextView_letterSpacing */ @RemoteView public class TextView extends View implements ViewTreeObserver.OnPreDrawListener { @@ -657,6 +658,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener int shadowcolor = 0; float dx = 0, dy = 0, r = 0; boolean elegant = false; + float letterSpacing = 0; final Resources.Theme theme = context.getTheme(); @@ -737,6 +739,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener case com.android.internal.R.styleable.TextAppearance_elegantTextHeight: elegant = appearance.getBoolean(attr, false); break; + + case com.android.internal.R.styleable.TextAppearance_letterSpacing: + letterSpacing = appearance.getFloat(attr, 0); + break; } } @@ -1078,6 +1084,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener case com.android.internal.R.styleable.TextView_elegantTextHeight: elegant = a.getBoolean(attr, false); break; + + case com.android.internal.R.styleable.TextView_letterSpacing: + letterSpacing = a.getFloat(attr, 0); + break; } } a.recycle(); @@ -1259,6 +1269,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } setRawTextSize(textSize); setElegantTextHeight(elegant); + setLetterSpacing(letterSpacing); if (allCaps) { setTransformationMethod(new AllCapsTransformationMethod(getContext())); @@ -2487,6 +2498,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener com.android.internal.R.styleable.TextAppearance_elegantTextHeight, false)); } + if (appearance.hasValue(com.android.internal.R.styleable.TextAppearance_letterSpacing)) { + setLetterSpacing(appearance.getFloat( + com.android.internal.R.styleable.TextAppearance_letterSpacing, 0)); + } + appearance.recycle(); } @@ -2667,6 +2683,41 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** + * @return the extent by which text is currently being letter-spaced. + * This will normally be 0. + * + * @see #setLetterSpacing(float) + * @hide + */ + public float getLetterSpacing() { + return mTextPaint.getLetterSpacing(); + } + + /** + * Sets text letter-spacing. The value is in 'EM' units. Typical values + * for slight expansion will be around 0.05. Negative values tighten text. + * + * @see #getLetterSpacing() + * @see Paint#setFlags + * + * @attr ref android.R.styleable#TextView_letterSpacing + * @hide + */ + @android.view.RemotableViewMethod + public void setLetterSpacing(float letterSpacing) { + if (letterSpacing != mTextPaint.getLetterSpacing()) { + mTextPaint.setLetterSpacing(letterSpacing); + + if (mLayout != null) { + nullLayouts(); + requestLayout(); + invalidate(); + } + } + } + + + /** * Sets the text color for all the states (normal, selected, * focused) to be this color. * |
