summaryrefslogtreecommitdiff
path: root/core/java/android/widget
diff options
context:
space:
mode:
authorSeigo Nonaka <nona@google.com>2018-12-12 11:34:13 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-12-12 11:34:13 +0000
commitab11e004490229e41cbd3cc31361bb67bb8a3e07 (patch)
treeb993f2fad594681002a0ee30ead458f7d52c51bc /core/java/android/widget
parent745bdd02cda76324cccf14fb8aa9c24af87f22cb (diff)
parent291ef0536d2ed154f5c559dbcdbfc92b10a21e66 (diff)
Merge "Recompute PcT with existing PcT for different direction"
Diffstat (limited to 'core/java/android/widget')
-rw-r--r--core/java/android/widget/TextView.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 522be81091fb..90da81276ba3 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -6028,14 +6028,22 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (mTextDir == null) {
mTextDir = getTextDirectionHeuristic();
}
- if (!precomputed.getParams().isSameTextMetricsInternal(
- getPaint(), mTextDir, mBreakStrategy, mHyphenationFrequency)) {
- throw new IllegalArgumentException(
+ final @PrecomputedText.Params.CheckResultUsableResult int checkResult =
+ precomputed.getParams().checkResultUsable(getPaint(), mTextDir, mBreakStrategy,
+ mHyphenationFrequency);
+ switch (checkResult) {
+ case PrecomputedText.Params.UNUSABLE:
+ throw new IllegalArgumentException(
"PrecomputedText's Parameters don't match the parameters of this TextView."
+ "Consider using setTextMetricsParams(precomputedText.getParams()) "
+ "to override the settings of this TextView: "
+ "PrecomputedText: " + precomputed.getParams()
+ "TextView: " + getTextMetricsParams());
+ case PrecomputedText.Params.NEED_RECOMPUTE:
+ precomputed = PrecomputedText.create(precomputed, getTextMetricsParams());
+ break;
+ case PrecomputedText.Params.USABLE:
+ // pass through
}
} else if (type == BufferType.SPANNABLE || mMovement != null) {
text = mSpannableFactory.newSpannable(text);