diff options
| author | 2017-07-10 17:41:16 +0200 | |
|---|---|---|
| committer | 2017-07-12 19:24:24 +0200 | |
| commit | 47ec33918b4d0e4bccfb6c0fd0750b03d899cadd (patch) | |
| tree | 3f449b7471d1bbecf45f7704d30aa639e61b930a | |
| parent | b02cbdeeb3cb4d7989d93649daac01d4ebb89fd6 (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.java | 8 | ||||
| -rw-r--r-- | core/tests/coretests/src/com/android/internal/widget/ImageFloatingTextViewTest.java | 12 |
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); |