From 37281c6c23e2b27d5f42a0089dc0f52c7949861b Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Fri, 28 Apr 2017 15:39:24 +0100 Subject: [PATCH] Remove ellipsizing support from EmojiTextView. This is a workaround for a layout bug. --- .../components/emoji/EmojiTextView.java | 56 ++----------------- 1 file changed, 5 insertions(+), 51 deletions(-) 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 024f318c05..76458decf5 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); - } - } - } -- GitLab