diff --git a/briar-android/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java b/briar-android/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java index 024f318c050e6f48c9cc974bf3054fe354811224..76458decf5434b3c645af2f0449d527ba3be9df3 100644 --- a/briar-android/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java +++ b/briar-android/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java @@ -1,29 +1,21 @@ package org.thoughtcrime.securesms.components.emoji; import android.content.Context; -import android.graphics.Paint.FontMetricsInt; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; import android.support.annotation.UiThread; -import android.text.TextUtils; +import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; import android.view.ViewConfiguration; -import android.widget.TextView; import org.thoughtcrime.securesms.components.emoji.EmojiProvider.EmojiDrawable; import javax.annotation.Nullable; -import static android.text.TextUtils.TruncateAt.END; -import static android.view.View.MeasureSpec.AT_MOST; -import static android.view.View.MeasureSpec.EXACTLY; import static android.widget.TextView.BufferType.SPANNABLE; @UiThread -public class EmojiTextView extends TextView { - - private CharSequence source; - private boolean needsEllipsizing; +public class EmojiTextView extends AppCompatTextView { public EmojiTextView(Context context) { this(context, null); @@ -42,13 +34,9 @@ public class EmojiTextView extends TextView { @Override public void setText(@Nullable CharSequence text, BufferType type) { - source = EmojiProvider.getInstance(getContext()).emojify(text, this); - - setTextEllipsized(source); - } - - private void setTextEllipsized(final @Nullable CharSequence source) { - super.setText(needsEllipsizing ? ellipsize(source) : source, SPANNABLE); + CharSequence source = + EmojiProvider.getInstance(getContext()).emojify(text, this); + super.setText(source, SPANNABLE); } @Override @@ -57,26 +45,6 @@ public class EmojiTextView extends TextView { else super.invalidateDrawable(drawable); } - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - final int size = MeasureSpec.getSize(widthMeasureSpec); - final int mode = MeasureSpec.getMode(widthMeasureSpec); - if (getEllipsize() == END && - !TextUtils.isEmpty(source) && - (mode == AT_MOST || mode == EXACTLY) && - getPaint().breakText(source, 0, source.length() - 1, true, size, - null) != source.length()) { - needsEllipsizing = true; - FontMetricsInt font = getPaint().getFontMetricsInt(); - int height = Math.abs(font.top - font.bottom); - super.onMeasure(MeasureSpec.makeMeasureSpec(size, EXACTLY), - MeasureSpec.makeMeasureSpec(height, EXACTLY)); - } else { - needsEllipsizing = false; - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - } - @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { @@ -89,20 +57,6 @@ public class EmojiTextView extends TextView { if (size > drawingCacheSize) { setLayerType(LAYER_TYPE_NONE, null); } - - if (changed) setTextEllipsized(source); super.onLayout(changed, left, top, right, bottom); } - - @Nullable - public CharSequence ellipsize(@Nullable CharSequence text) { - if (TextUtils.isEmpty(text) || getWidth() == 0 || - getEllipsize() != END) { - return text; - } else { - return TextUtils.ellipsize(text, getPaint(), - getWidth() - getPaddingRight() - getPaddingLeft(), END); - } - } - }