|
|
@ -4,17 +4,13 @@ import android.text.InputFilter;
|
|
|
|
import android.text.Spannable;
|
|
|
|
import android.text.Spannable;
|
|
|
|
import android.text.Spanned;
|
|
|
|
import android.text.Spanned;
|
|
|
|
import android.text.TextUtils;
|
|
|
|
import android.text.TextUtils;
|
|
|
|
import android.text.TextUtils.TruncateAt;
|
|
|
|
|
|
|
|
import android.view.View;
|
|
|
|
|
|
|
|
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
|
|
|
|
|
|
|
import android.widget.TextView;
|
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
|
|
|
|
|
|
public class EmojiFilter implements InputFilter, OnGlobalLayoutListener {
|
|
|
|
public class EmojiFilter implements InputFilter {
|
|
|
|
private TextView view;
|
|
|
|
private TextView view;
|
|
|
|
|
|
|
|
|
|
|
|
public EmojiFilter(TextView view) {
|
|
|
|
public EmojiFilter(TextView view) {
|
|
|
|
this.view = view;
|
|
|
|
this.view = view;
|
|
|
|
view.getViewTreeObserver().addOnGlobalLayoutListener(this);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override public CharSequence filter(CharSequence source, int start, int end,
|
|
|
|
@Override public CharSequence filter(CharSequence source, int start, int end,
|
|
|
@ -26,18 +22,6 @@ public class EmojiFilter implements InputFilter, OnGlobalLayoutListener {
|
|
|
|
if (source instanceof Spanned) {
|
|
|
|
if (source instanceof Spanned) {
|
|
|
|
TextUtils.copySpansFrom((Spanned) source, start, end, null, emojified, 0);
|
|
|
|
TextUtils.copySpansFrom((Spanned) source, start, end, null, emojified, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (view.getWidth() == 0 || view.getEllipsize() != TruncateAt.END) {
|
|
|
|
|
|
|
|
return emojified;
|
|
|
|
return emojified;
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return TextUtils.ellipsize(emojified,
|
|
|
|
|
|
|
|
view.getPaint(),
|
|
|
|
|
|
|
|
view.getWidth() - view.getPaddingRight() - view.getPaddingLeft(),
|
|
|
|
|
|
|
|
TruncateAt.END);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("deprecation")
|
|
|
|
|
|
|
|
@Override public void onGlobalLayout() {
|
|
|
|
|
|
|
|
view.invalidate();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|