summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Selim Cinek <cinek@google.com> 2017-07-10 17:41:16 +0200
committer Selim Cinek <cinek@google.com> 2017-07-12 19:24:24 +0200
commit47ec33918b4d0e4bccfb6c0fd0750b03d899cadd (patch)
tree3f449b7471d1bbecf45f7704d30aa639e61b930a
parentb02cbdeeb3cb4d7989d93649daac01d4ebb89fd6 (diff)
Using transformation method in the ImageFloatingTextView
Otherwise things like singleline and password don't work. Test: runtest -x core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java Change-Id: I9d7d13c038be38319e6516715137789f612a43f7 Fixes: 36713596
-rw-r--r--core/java/com/android/internal/widget/ImageFloatingTextView.java8
-rw-r--r--core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java12
2 files changed, 19 insertions, 1 deletions
diff --git a/core/java/com/android/internal/widget/ImageFloatingTextView.java b/core/java/com/android/internal/widget/ImageFloatingTextView.java
index 6b53368c3443..31b167d43f66 100644
--- a/core/java/com/android/internal/widget/ImageFloatingTextView.java
+++ b/core/java/com/android/internal/widget/ImageFloatingTextView.java
@@ -22,6 +22,7 @@ import android.text.BoringLayout;
import android.text.Layout;
import android.text.StaticLayout;
import android.text.TextUtils;
+import android.text.method.TransformationMethod;
import android.util.AttributeSet;
import android.view.RemotableViewMethod;
import android.widget.RemoteViews;
@@ -68,7 +69,12 @@ public class ImageFloatingTextView extends TextView {
protected Layout makeSingleLayout(int wantWidth, BoringLayout.Metrics boring, int ellipsisWidth,
Layout.Alignment alignment, boolean shouldEllipsize,
TextUtils.TruncateAt effectiveEllipsize, boolean useSaved) {
- CharSequence text = getText() == null ? "" : getText();
+ TransformationMethod transformationMethod = getTransformationMethod();
+ CharSequence text = getText();
+ if (transformationMethod != null) {
+ text = transformationMethod.getTransformation(text, this);
+ }
+ text = text == null ? "" : text;
StaticLayout.Builder builder = StaticLayout.Builder.obtain(text, 0, text.length(),
getPaint(), wantWidth)
.setAlignment(alignment)
diff --git a/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java b/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java
index a2499252da93..1806b226e7b3 100644
--- a/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java
@@ -21,9 +21,11 @@ import static org.junit.Assert.assertTrue;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.filters.SmallTest;
+import android.text.Layout;
import android.view.View.MeasureSpec;
import android.widget.TextView;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -102,6 +104,16 @@ public class ImageFloatingTextViewTest {
+ "Yada yada, yada yada. Lorem ipsum dolor sit amet.");
}
+ @Test
+ public void usesTransformationMethod() {
+ mView.setSingleLine();
+ String text = "Test \n Test";
+ parametrizedTest(text);
+ Layout layout = mView.getLayout();
+ Assert.assertFalse("The transformation method wasn't used, string is still the same",
+ text.equals(layout.getText()));
+ }
+
private void parametrizedTest(CharSequence text) {
int heightMeasureSpec = MeasureSpec.makeMeasureSpec(500, MeasureSpec.AT_MOST);
int widthMeasureSpec = MeasureSpec.makeMeasureSpec(500, MeasureSpec.EXACTLY);