Properly implement Paint.breakText for layoutlib.
BUG 2260400
Change-Id: I7082e366b65da0b5de2a6dbb547f66e05e0b78e0
diff --git a/tools/layoutlib/bridge/src/android/graphics/Paint.java b/tools/layoutlib/bridge/src/android/graphics/Paint.java
index 86de56b..f3af133 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Paint.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Paint.java
@@ -950,7 +950,6 @@
@Override
public int breakText(String text, boolean measureForwards,
float maxWidth, float[] measuredWidth) {
- // NOTE: javadoc doesn't match. Just a guess.
return breakText(text,
0 /* start */, text.length() /* end */,
measureForwards, maxWidth, measuredWidth);
@@ -975,7 +974,18 @@
@Override
public int breakText(CharSequence text, int start, int end, boolean measureForwards,
float maxWidth, float[] measuredWidth) {
- return super.breakText(text, start, end, measureForwards, maxWidth, measuredWidth);
+ char[] buf = new char[end - start];
+ int result;
+
+ TextUtils.getChars(text, start, end, buf, 0);
+
+ if (measureForwards) {
+ result = breakText(buf, 0, end - start, maxWidth, measuredWidth);
+ } else {
+ result = breakText(buf, 0, -(end - start), maxWidth, measuredWidth);
+ }
+
+ return result;
}
/**