fixed ide preview mode exception
This commit is contained in:
parent
6f6dec7bb6
commit
4e6d3f7dee
|
@ -23,13 +23,23 @@ import android.graphics.drawable.Drawable;
|
|||
import android.support.annotation.NonNull;
|
||||
import android.text.Spannable;
|
||||
import android.text.Spanned;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.mariotaku.twidere.text.style.EmojiSpan;
|
||||
import org.mariotaku.twidere.text.util.EmojiEditableFactory;
|
||||
import org.mariotaku.twidere.text.util.EmojiSpannableFactory;
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 15/12/20.
|
||||
*/
|
||||
public class EmojiSupportUtils {
|
||||
|
||||
public static void initForTextView(TextView textView) {
|
||||
if (textView.isInEditMode()) return;
|
||||
textView.setSpannableFactory(new EmojiSpannableFactory(textView));
|
||||
textView.setEditableFactory(new EmojiEditableFactory(textView));
|
||||
}
|
||||
|
||||
public static void applyEmoji(ExternalThemeManager manager, @NonNull Spannable text) {
|
||||
applyEmoji(manager, text, 0, text.length());
|
||||
}
|
||||
|
|
|
@ -33,9 +33,7 @@ import android.widget.AdapterView;
|
|||
|
||||
import org.mariotaku.twidere.R;
|
||||
import org.mariotaku.twidere.adapter.ComposeAutoCompleteAdapter;
|
||||
import org.mariotaku.twidere.text.util.EmojiEditableFactory;
|
||||
import org.mariotaku.twidere.text.util.EmojiSpannableFactory;
|
||||
import org.mariotaku.twidere.text.util.SafeEditableFactory;
|
||||
import org.mariotaku.twidere.util.EmojiSupportUtils;
|
||||
import org.mariotaku.twidere.util.widget.StatusTextTokenizer;
|
||||
import org.mariotaku.twidere.view.iface.IThemeBackgroundTintView;
|
||||
|
||||
|
@ -54,8 +52,7 @@ public class ComposeEditText extends AppCompatMultiAutoCompleteTextView implemen
|
|||
|
||||
public ComposeEditText(final Context context, final AttributeSet attrs, final int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
setEditableFactory(new EmojiEditableFactory(this));
|
||||
setSpannableFactory(new EmojiSpannableFactory(this));
|
||||
EmojiSupportUtils.initForTextView(this);
|
||||
setTokenizer(new StatusTextTokenizer());
|
||||
setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
|
|
|
@ -6,26 +6,24 @@ import android.text.method.MovementMethod;
|
|||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import org.mariotaku.twidere.text.util.EmojiEditableFactory;
|
||||
import org.mariotaku.twidere.text.util.EmojiSpannableFactory;
|
||||
import org.mariotaku.twidere.text.util.SafeEditableFactory;
|
||||
import org.mariotaku.twidere.util.EmojiSupportUtils;
|
||||
import org.mariotaku.twidere.view.themed.ThemedTextView;
|
||||
|
||||
public class StatusTextView extends ThemedTextView {
|
||||
|
||||
public StatusTextView(final Context context) {
|
||||
super(context);
|
||||
init();
|
||||
EmojiSupportUtils.initForTextView(this);
|
||||
}
|
||||
|
||||
public StatusTextView(final Context context, final AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
init();
|
||||
EmojiSupportUtils.initForTextView(this);
|
||||
}
|
||||
|
||||
public StatusTextView(final Context context, final AttributeSet attrs, final int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
init();
|
||||
EmojiSupportUtils.initForTextView(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -33,16 +31,13 @@ public class StatusTextView extends ThemedTextView {
|
|||
// FIXME simple workaround to https://code.google.com/p/android/issues/detail?id=191430
|
||||
// Android clears TextView when setText(), so setText before touch
|
||||
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
|
||||
if (getSelectionEnd() != getSelectionStart()) {
|
||||
final CharSequence text = getText();
|
||||
setText(null);
|
||||
setText(text);
|
||||
}
|
||||
return super.dispatchTouchEvent(event);
|
||||
}
|
||||
|
||||
private void init() {
|
||||
setEditableFactory(new EmojiEditableFactory(this));
|
||||
setSpannableFactory(new EmojiSpannableFactory(this));
|
||||
return super.dispatchTouchEvent(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -28,7 +28,7 @@ import android.text.style.ClickableSpan;
|
|||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import org.mariotaku.twidere.text.util.EmojiSpannableFactory;
|
||||
import org.mariotaku.twidere.util.EmojiSupportUtils;
|
||||
import org.mariotaku.twidere.view.themed.ThemedTextView;
|
||||
|
||||
/**
|
||||
|
@ -40,17 +40,17 @@ public class TimelineContentTextView extends ThemedTextView {
|
|||
|
||||
public TimelineContentTextView(Context context) {
|
||||
super(context);
|
||||
setSpannableFactory(new EmojiSpannableFactory(this));
|
||||
EmojiSupportUtils.initForTextView(this);
|
||||
}
|
||||
|
||||
public TimelineContentTextView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
setSpannableFactory(new EmojiSpannableFactory(this));
|
||||
EmojiSupportUtils.initForTextView(this);
|
||||
}
|
||||
|
||||
public TimelineContentTextView(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
setSpannableFactory(new EmojiSpannableFactory(this));
|
||||
EmojiSupportUtils.initForTextView(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue