From 82eabea340860c5209b2507c29b23306f54d518e Mon Sep 17 00:00:00 2001 From: Gavriil Sitnikov Date: Wed, 31 Aug 2016 16:19:21 +0300 Subject: [PATCH] typefaces views fixes --- .../components/views/TypefacedEditText.java | 21 ++++++++++++++++++- .../components/views/TypefacedTextView.java | 9 ++++++++ .../views/internal/AttributesUtils.java | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/touchin/roboswag/components/views/TypefacedEditText.java b/src/main/java/ru/touchin/roboswag/components/views/TypefacedEditText.java index fb55c06..f703b53 100644 --- a/src/main/java/ru/touchin/roboswag/components/views/TypefacedEditText.java +++ b/src/main/java/ru/touchin/roboswag/components/views/TypefacedEditText.java @@ -27,6 +27,8 @@ import android.support.v7.widget.AppCompatEditText; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; +import android.text.method.SingleLineTransformationMethod; +import android.text.method.TransformationMethod; import android.util.AttributeSet; import java.util.ArrayList; @@ -217,8 +219,17 @@ public class TypefacedEditText extends AppCompatEditText { * @param maxLines Maximum lines to be set. */ public void setMultiline(final int maxLines) { - super.setMaxLines(maxLines); + if (maxLines <= 1) { + Lc.assertion("Wrong maxLines: " + maxLines); + return; + } multiline = true; + final TransformationMethod transformationMethod = getTransformationMethod(); + super.setSingleLine(false); + super.setMaxLines(maxLines); + if (!(transformationMethod instanceof SingleLineTransformationMethod)) { + setTransformationMethod(transformationMethod); + } } @Override @@ -232,6 +243,14 @@ public class TypefacedEditText extends AppCompatEditText { @Override public void setSingleLine() { + final TransformationMethod transformationMethod = getTransformationMethod(); + super.setSingleLine(true); + if (transformationMethod != null) { + if (!(transformationMethod instanceof SingleLineTransformationMethod)) { + Lc.w("SingleLineTransformationMethod method ignored because of previous transformation method: " + transformationMethod); + } + setTransformationMethod(transformationMethod); + } setLines(1); multiline = false; } diff --git a/src/main/java/ru/touchin/roboswag/components/views/TypefacedTextView.java b/src/main/java/ru/touchin/roboswag/components/views/TypefacedTextView.java index f41870c..ee7ffe4 100644 --- a/src/main/java/ru/touchin/roboswag/components/views/TypefacedTextView.java +++ b/src/main/java/ru/touchin/roboswag/components/views/TypefacedTextView.java @@ -26,6 +26,8 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.AppCompatTextView; import android.text.TextUtils; +import android.text.method.SingleLineTransformationMethod; +import android.text.method.TransformationMethod; import android.util.AttributeSet; import android.util.TypedValue; @@ -198,7 +200,14 @@ public class TypefacedTextView extends AppCompatTextView { */ public void setLineStrategy(@NonNull final LineStrategy lineStrategy, final int maxLines) { this.lineStrategy = lineStrategy; + final TransformationMethod transformationMethod = getTransformationMethod(); super.setSingleLine(!lineStrategy.multiline); + if (transformationMethod != null) { + if (!(transformationMethod instanceof SingleLineTransformationMethod)) { + Lc.w("SingleLineTransformationMethod method ignored because of previous transformation method: " + transformationMethod); + } + setTransformationMethod(transformationMethod); + } if (lineStrategy.multiline) { super.setMaxLines(maxLines); } diff --git a/src/main/java/ru/touchin/roboswag/components/views/internal/AttributesUtils.java b/src/main/java/ru/touchin/roboswag/components/views/internal/AttributesUtils.java index b129bdb..b93a71e 100644 --- a/src/main/java/ru/touchin/roboswag/components/views/internal/AttributesUtils.java +++ b/src/main/java/ru/touchin/roboswag/components/views/internal/AttributesUtils.java @@ -128,7 +128,7 @@ public final class AttributesUtils { try { final Class androidRes = Class.forName("com.android.internal.R$styleable"); final TypedArray typedArray = context.obtainStyledAttributes(attrs, AttributesUtils.getField(androidRes, "TextView")); - final int result = typedArray.getInt(AttributesUtils.getField(androidRes, "TextView_fontFamily"), Integer.MAX_VALUE); + final int result = typedArray.getInt(AttributesUtils.getField(androidRes, "TextView_maxLines"), Integer.MAX_VALUE); typedArray.recycle(); return result; } catch (Exception e) {