如何检查Android中的EditText是否有表情符号?

时间:2014-04-02 09:41:27

标签: android android-edittext textview

我需要检查编辑文本中是否有一些表情符号。我尝试制作一个文本观察器,在其中检查是否存在图像跨度,但我无法获得任何结果。

SpannableStringBuilder s = new SpannableStringBuilder(source.toString());
ImageSpan a[]= s.getSpans(0,s.length(), ImageSpan.class);

if(a.length!=0){
    Toast.makeText(NewEpisodeActivity.this, R.string.invalid_char, Toast.LENGTH_SHORT).show();
    return "";
}

2 个答案:

答案 0 :(得分:0)

你应该将带有表情符号代码的hashmap作为键和表情符号图像作为值。 现在检查文本是否是表情符号代码,如果是,那么

s.setSpan(new ImageSpan(Context, Emoticons_Image, startPos, endPos, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

答案 1 :(得分:0)

登记afterTextChanged(Editable editable)而不是onTextChanged()

private TextWatcher textChangedListener = new TextWatcher() {

    @Override
    public void afterTextChanged(Editable editable) {
        final ImageSpan[] itemSpans = editable.getSpans(0, editable.length(), ImageSpan.class);
        final boolean hasEmoticons = itemSpans != null && itemSpans.length > 0;
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

};